Begin reworking map negotiation

When a client connects it's sent a map_offer message. The map_offer
entity is a string containing a hash of the map loaded by the server.
The client, upon receiving the offer checks if it has the map available
to it. If not, it responds with a map_request message -- which has no
entity. Upon receiving the map_request, the server responds with a
'map' message with the base64-encoded map contents as the entity.

In doing this I realised it'd probably be best if handlers were
std::function, so I've changed them to that. I wanted to use a typedef
for it but I don't understand this shit so it's commented out whilst
I wait for my knight in shining armour to come along and tell me how
the fuck it works.
Clean up some poor encapsulisatiotiaitation

 * Removed m_map_hash and m_map_name from Server. These should be
   members of Level objects.
 * Level now exposes a MD5 type member
Send base64 map contents when client doesn't have the map
Rename message type names

 * map_offer -> map.offer
 * map_request -> map.request
 * map -> map.contents

No real strong reason for this. I just think it looks nicer. :>
Merge pull request #23 from Holiverh/master

Add map/level negotiation to server