PriorityMailbox

* Contains a new generic mailbox base `Mailbox<TSys,TUser>` which can consume different kinds of message queues
* Contains `UnboundedPriorityMailbox` base class that can be used to create custom priority mailboxes
* Contains `MessageQueue` and related semantics

Related to #299 and #301 
Yes it could.
However, one would have to take into consideration that a normal unbounded mailbox will yield out of memmory exception and kill the entire system in the same scenario given enough time.
So unbounded queues are not safe for extreme load.
(thus the introduction of akka streams)

So I guess we have three ways to deal with this:

1. We leave it as is and just accept that unbounded queues can be harmful.

2. We make the loop exit after x times, this will make the priority of messages less exact, 
but it can never be more than best effort anyway.

e.g. send a low prio message and wait one hour and send a high prio message, the low prio message will ofcourse arrive first no matter what approach we take.

3. We make it blocking. (which still only gives best effort, se comment above)

I'm open to any of the approaches