Added QueueAttribute for controling queue / exchange name.

Modified `Conventions` class to support queue and exchange naming through `QueueAttribute`. Logic is as follow:
* if message type is not decorated with `QueueAttribute` then everything works as before
* if message type is decorated then 
   - queue name is taken from the attribute (unless it's empty)
   - if attribute specifies `ExchangeName` then it is used for exchange name

It also allows to use only queue name for queue is `subscriptionId` is null or empty.