Add the loaded overmap and fix monster groups on it afterwards.

No infinite recursion for you, as fix_mongroups would attempt to load the neighbouring overmaps to move monster groups there.
Make overmap::layer a std::array instead of a pointer.

Makes overmap::settings private and put as last member to match ordering in copy constructor.
remove all the default initialization code, use copy/assignment operators of std::array.

Changed assignment operator over overmap to compiler generated.

Added compiler generated copy / move constructor of overmap.

Now that all date of that class supports this, why not?
Remove overmap::name and overmap::prefix.

It's not used anymore. The name and prefix are calculated when needed in
overmapbuffer::terrain_filename and
overmapbuffer::player_filename.
Make list of loaded overmap a std::vector of unique_ptr,

With overmap::layer being a std::array, a overmap does not fit onto the stack and must be created on the heap all the time.
Therefor put it into a std::uniqe_ptr.

Removed all the const qualifiers of the overmapbuffer functions. There is *one* instance of it and it's always non-const, so what's the point? It only makes some functions require const_cast.

Moved last_requested_overmap into the overmapbuffer class, should be there.