Regarding isolation levels, you can already get serializable isolation by using SELECT FOR UPDATE. E.g. to do a multi-statement update transaction you can do
BEGIN;
select … for update …; /* will hold locks on all rows fetched, until commit /
…
update … ; / can depend on rows fetched by SELECT */
COMMIT;