Tieing map_header_in_use to a _Header is a mistake since ownership of
the map_header_in_use can move (clone). Instead, grab the
map_header_in_use entry at the top of each call chain and release at the
end. To facilitate that, we introduce a MapHeaderLock object and
require that it be passed to the various map header manipulation
methods.
Fixes: #9326 Signed-off-by: Samuel Just <sam.just@inktank.com>