Improve and simplify the LSM switch logic

it is fine to keep writing into a chunk while it is being switched, until either it hits the hard chunk size limit or a switch transaction ID is chosen that is larger than the writer's.  Fixes an assertion failure introduced by #1432 that could write to an old chunk after the switch completed.

refs #1432, #1418
I think that's okay, actually.  For us to set `evict_chunk`, the chunk has to be on-disk (I've clarified that in the final version of this branch).  If the last chunk in the tree is on disk, we should evict the corresponding in-memory chunk.