Don't use gradle 'configurations' in smack-core

Fixes SMACK-587
Remove MUC DeafOccupantIntercepter

as it's a old (likely unused) Jive (Wildfire) proprietary extension.
Make PacketCollector fields final where possible
Use CopyOnWriteArraySet for connectionListener
Reworked (send|recv)Listeners, ListenerWrapper

instead of rely on ListenerWrapper checking the PacketFilter *and*
invoking the PacketListener we now use two for-each loops, where the
first filters the PacketListeners that should get invoked and use the
second for-each loop to actually invoke the PacketListener.

Before, the code was not thread safe if a PacketListener would remove
itself from the (send|recv)Listeners.

Also make packet(Listener|Filter) in ListenerWrapper final.
Add invokePacketCollectors, remove duplicate code

Add javadoc about why we use CocurrentLinkedQueue for collectors.
Reworked Interceptor and InterceptorWrapper

Allows interceptor to remove themselves in the interceptPacket() method.

Same change for Interceptors as was done in
15d59299a2c28d9a40d543f179c00803b7f6a2ec for (send|recv)Listeners.
Rework smackx.address (XEP-0033: Extended Stanza Addressing)

- Make MultipleAddress.Type a enum
- Change the signature of the methods to use Collection instead of List
- Use for-each loops instead of iterators
- Switch Provider to new provider pattern (using switch-case)
- Use XmlStringBuilder (extend the API by two new methods)