Alter homepage caching not to cause InternalError.

The change is based on the following test. You need two separate
connections to the db. On the first run:

    create table a (i int4);
    insert into a (i) values(1);
    begin;
    delete from a;

Now on the second connection run:

    select * from a;

That does not block and returns "1". The thing is that we can freely
update the table "a" in a transaction and not block parallel reading
of the original data in the table.

Open question: Does Heroku have some autovacuming on? If not we should
turn it on or the homepage tables will grow beyond bounds (the deleted
data is expunged only by a vacuum run - or at least that is what they write in 
"PostgreSQL 9.0 High Performace" book :tongue:).

Hopefully this could solve #1526, #1407 and #1168.
Ready for review and/or merge.