Refactor structure to allow lazy loading without configuration

Refactors the AMQP client to allow queues, exchanges etc to be automatically declared on demand. So things like this are now possible:

    Yii::app()->mq->exchanges->myNewExchangeName->send($thing);

    Yii::app()->mq->queues->whateverQueue->consume(function($msg) { print_r($msg); });

Without having to declare and bind those exchanges/queues first.