Add MultiUserChat.createOrJoin(String,String,DiscussionHistory,long)
Use standard manager pattern in PingManager

- No need to use a synchronized map, as the getInstanceFor method is
  synchronized
- Put the PingManager in the map where it's created and not in the
  constructor
Improve PingManager javadoc
Add LICENSE
Don't use synchonrizedMap() for INSTANCES

in Managers. The getInstanceFor() method is already synchronized.
Use ConcurrentHashMap instead of synchronizedMap

in ChatManager. Also use diamond operator.
Make FormField.Type an enum
Add Packet.toString()
Minor refactoring in DataForm.hasHiddenFormTypeField()
Move lastStanzaReceived in processPacket

of AbstractXMPPConnection.

In worst case we loose a timestamp because handleUnparsablePacket threw
an Exception.
Add AbstractXMPPConnection.parseAndProcessStanza()

and remove BOSHPacketReader.

Reduces the duplicate code in smack-tcp and smack-bosh. Also moves
ParsingExceptionCallback into AbstractXMPPConnection.
Use assertAtStartTag in parseStanza
Remove connection field from BOSHConnectionListener
Assert that processPacket is not called with null
Use entries.containsKey in Roster
Remove duplicate code in Roster

By introducing getUserPresences(String) in PresencePacketListener.
Add Roster.get(All|Available)Presences(String)
Change muc.InvitationListner to use the MUC instance
Remove unused import in bytestream Open IQ
Support for XEP-0122: Data Forms Validation.

Data Forms Validation are a part of Data Fields and implemented as
extensions, added to a Datafield.

Data validation extensions are validated before adding to the message,
using the consistency rules as described in the XEP.
Fixes SMACK-621.

Minor modifications done by Florian Schmaus <flo@geekplace.eu>