DESC
Implement lingering transactions.
EDESC
This patch implement lingering transactions.

It allows you to trade performance with recovery time, by using a different
approach to journaling.

Normally, you would open the file O_SYNC, and when commiting a transaction
data gets written twice: once in the transaction file, and once in the real
file. Then, after the last write, the transaction file is removed.

What this patch do is allow you to avoid opening the file O_SYNC, and thus
writing the data synchronously only once, speeding up operations. The OS will
do the writeouts asynchronous when it think the time is right.

In this mode, the transaction file is written synchronously, but instead of
then writing to the real file with O_SYNC and then removing the transaction
file, we do the write _without_ O_SYNC and leave the transaction file.

In case of a crash, the transaction files will still be there for recovery, so
there's no risk of losing data.

