Datagram: add add_server_header and add_control_header and constructors that call them
MessageDirector: Use new Datagram constructors for control messages
Merge branch 'master' of github.com:OpenOTP/OpenOTP
RoleFactory: Use standard unordered_map instead of hash_map
Merge pull request #24 from OpenOTP/kestred-hash-to-unordered

RoleFactory: Use standard unordered_map instead of hash_map
Datagram: Use CONTROL_MESSAGE macro.
Datagram: Add constructor/add_server_header for a set of channels.
Datagram: Add method for appending a sub-datagram.
Datagram: Remove unneeded member.
Datagram: add_datagram takes a const
Merge pull request #30 from OpenOTP/cfsworks-dgcleanup

Clean up datagram structure
Merge pull request #31 from OpenOTP/cfsworks

Minor test and documentation updates
MessageDirector: Use map<channel, list<participant>> for single channels.
TODO: Create BST type structure to handle ranges, and interface with it as necessary.
BUG: Tests stall indefinitely at around

        # Send messages on a few channels on c2, see which ones c1 gets.
        def check_channels(channels):
            for channel, should_receive in channels:
                dg = Datagram.create([channel], 123456789, 5858)
                dg.add_uint16(channel) # For some semblance of uniqueness
                self.c2.send(dg)
                if should_receive:
                    self.assertTrue(self.c1.expect(dg))
                    self.assertTrue(self.c1.expect_none()) # No repeats!
                else:
                    self.assertTrue(self.c1.expect_none())
                # And, of course, l1 receives all of these:
                self.assertTrue(self.l1.expect(dg))
        check_channels([
            (500, False),
            (999, False),
            (1000, True),
            (1001, True),
            (1299, True),
            (1300, True),
            (1500, True),
            (1699, True),
            (1700, True),
            (1701, True),
            (1900, True),
            (1999, True),
            (2000, False),
            (2050, False),
            (2500, False)])
MessageDirector: Implement ranges with interval_map.
Now handles CONTROL_REMOVE_RANGE. Still stalls on test suite.
MessageDirector: Moved participant specific info out of director and into MDParticipantInterface.
MessageDirector: Fix loop.
MessageDirector: Correctly prepare the set of subscribers.
MessageDirector: Fix for test_single, test_multi
MessageDirector: Handle remove upstream routing correctly.
MessageDirector: Fix upstream flow of single-channel add messages.