AMQP-330: fix JavaTypeMapper JsonArray conversion

Since `JsonMessageConverter` (`Jackson2JsonMessageConverter`) uses
`JavaTypeMapper`(`Jackson2JavaTypeMapper`) it should correctly do
a conversion around simple Java and arrays (`String[]`) too.
Seeing Jackson's `ArrayType` is **ContainerType**, erenow `JavaTypeMapper`
implementation added to `Properties` '__ContentTypeId__' header
on `toMessage` call and tried to create a collection (not array) from that header
on `fromMessage` call.

Add checks that provided **ContainerType** is (not is) **ArrayType**

JIRA: https://jira.springsource.org/browse/AMQP-330
AMQP-332 Fix Multiple Listeners with Id

Previously, if the parent <listener-container/> element
was given an Id, and multiple <listener/> elements existed
only one listener container bean was defined - the parent
element Id was used for the bean name.

- Use the child element id if present
- Disallow multiple child elements with the same id
- If a single child element has no id, use the parent
- If multiple elements with the same id exist, use the parent id + '#n'.

Polishing

The anonymous parent case didn't work. Since the generated
bean name was never registered, two or more anonymous listener-container
elements got the same generated name, causing collisions.

Generate the anonymous name internally.

For the test case, reset the instance variable for each test.

JIRA: https://jira.springsource.org/browse/AMQP-332