Full control over queue, exchange and message setup options.

This change allows users to specify any of the supported options in node-amqp thus giving full control over any resource they create. It also slightly modifies the client API signature to better distinguish between option types (i.e. exchange vs queue vs message) and makes interface clearer. Furthermore it allows to specify a different route key override when writing messages instead of using setsockopt() on every call. Also it is now possible to delete a permanent queue by adding two parameters (queue name and delete options) to the destroy() function. 

The code was carefully written as to not make any changes to the underlying code logic, thereby respecting the original author's intentions. It simply makes certain things more transparent. Because of the slight API change, it requires a minor version number change.