Split memory management

Some attempts to address #1079 -- just for discussion at this point.
@michaelcahill, I don't see a path where `It is possible that a thread could re-enter this code already having a split generation`, am I missing something?