Dev/support for maps of structs

add support for ``map[Key]Value`` where ``Key`` and ``Value`` are structs holding structs.

it may be a bit more contentious as this will create a copy of the key and value if one cannot take their address.

I added it for symetry, I don't use it (for now at least.)