Add capability to remove keys from MemoryMapState 

The implementation maintains proper opaque semantics, so if the batch is retried the keys will still be there. Keys are officially removed once the next batch starts. This also fixes a bug in OpaqueMap where get after put/update in the same batch wasn't working properly.