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 
I would make the priority queue implementation thread-safe and have it block and write directly to that - we'll be taking a bit of a perf hit since it won't have the native optimizations that ConcurrentQueue has but live-locking this code might not be that hard to do (a for...loop might be enough.) I'd err on the side of predictability in this case.