First implementation of message type parser

A static class that enables more complex message types to be correctly
parsed to .Net-compatible, GetType-loadable type names. (Makes some of
the loopback tests go green.)
Add assembly name to message URN

MessageUrn assumed that the message type was defined in an assembly
named the same as its namespace, which does not always have to be the
case.
Fix for a .NET Uri bug

After some poking around it turned out that .NET < 4.5.1 incorrectly
esapes some characters essential to MessageUrn doing its job properly.