Checkpoint progress on new LWLock semantics

These allow buffer locks to be weakened and strengthened under specific
circumstances, and will allows us to not sit on an exclusive lock during heap
insertion - a shared buffer lock ought to be sufficient.

Isolation tests pass, but more intense pgbench testing still falls over.