This implements Send/Sync and for allowing this safely it provides no
reference counting and requires a mutable reference for all mutable
operations.
It also provides safe access to the Adapter::map() function as without
reference counting we can ensure that nothing else is invalidating the
returned memory while it's still being accessed.