mon: Monitor: dissociate msg handling from session and connection logic

This pull request features 3 major things:

1) dissociate msg handling from session and connection logic:
Having ``Monitor::_dispatch()`` responsible for checking whether a message should be dispatched or not, and having ``Monitor::dispatch()`` doing the actual dispatching, makes for more readable code.

2) drop any message originating on a connectionless client:
We do contemplate monitors sending messages without a connection to other monitors, but a client should always have an established connection.

3) enforce the first message from a client to be an MAuth:
If we are about to set up a session for a client, we should make sure that the message triggering the session establishment is an MAuth -- we don't want clients sending messages to the monitors unless they are properly authenticated.