common/include: Add map type election and fmt::format to interval_map
Add capability to choose the type of map used in interval_map.
The default will be std::map and so should not change any existing
implementation.
This behaviour is already available in interval_set. The intention
is to enable a more efficient map library which suits a particular
application.
The optimized EC code, which is coming soon, will use a boost::flat_map
here since it deals with large numbers of very small (usually single-entry)
interval_maps.
Also adds fmt::format support and refactors print functions in both
set and map.