Added the TopicLayout appender property.

The "Topic" property is static, all events that go through the appender
will use the same Topic.  But what if your app needs to publish
different events, with different topics?

If set, TopicLayout superceeds the Topic property (use one or the
other, but not both.).  It is more flexible since it uses a
layoutConversion to format the topic.  This means the topic can use
message specific properties (like event or thread based properties).

Image you have an app that publishes multiple events and each event
needs a different topic.  The app could set a custom property, say
"routingKey" on the event or thread context when the event is being
published.  If the TopicLayout is "%property{routingKey}" each event
would get published with the event specific routing key.
Updated Readme to provide a better example of using the TopicLayout with a custom property.
Added support for the ExchangeBinding property on the appender.

The ExchangeBinding allows you to configure one or more exchange
bindings.  The ExchangeBinding defines the destination exchange and
routing key for the binding.  The appender Exchange property is used as
the source exchange.  The exchange bindings are created at startup when
the exchange is declared.