This patch suffered a lot of bitrot in the last month, mostly due to the noop patch for SSI. It also used the term SERIALIZABLE in many places to indicate any transaction-snapshot mode transaction, so I applied changes consistent with the noop patch. I also found a few whitespace and brace usage issues which seemed to conflict with conventional usage and cleaned those up. A minor spelling typo also corrected.
A new patch reflecting all this is attached.
This now compiles and passes regression tests. I still need to re-run all the other tests which Florian and I previously used to test the patch. I don't have any reason to expect that they will now fail, but one need to be thorough. Once that is confirmed, I think this will be ready for committer unless someone can think of something else to throw at it first.