Remove header guard from map

It's unecessary and broken since the header is designed to define
multiple types.

Also tidy up some code and add a rough overview of the algorithms to the
header.