Smack 4.0.3-SNAPSHOT
Fix FormField.Option.toXML() to use correct element

Fixes SMACK-589
Improve documentation (targetCompatibility, XPP3)
Fix Typo: s/isSubscibe/isSubscribe/ in ConfigureForm

Fixes SMACK-588
Verify ConnectionConfiguration parameters

also fix javadoc error for StringUtils.isNullOrEmpty()

Fixes SMACK-539
Make getMessages() set up collector *before* sending the request

Similar flaw was also fixed in 2c7f1efe80b988.

Also ensure that OfflineMessagesManager doesn't leak collector by using
a try/finally block.

Fixes SMACK-592
Make Socks5Proxy try other ports if 7777 is already in use

by setting the default value to '-7777' (negative values mean that the
next port number will be tried if the current one is in use).
Throw IAE if invalid port number is given for Socks5Proxy
Add a setting for the used flush mode when compressing data

Fixes SMACK-593
Merge branch '4.0'

Also slightly improve OfflineMessageManager.getMessages()

Conflicts:
	build.gradle
	smack-extensions/src/main/java/org/jivesoftware/smackx/offline/OfflineMessageManager.java
Check if android.jar exists

and throw exception if not
Improved iqVersion code

including parsing and the version class.
s/buildDate/builtDate/
Record built date in version
Make ServiceDiscoveryManager.findServices() more robust

the method should not throw an exception if the discovery of the service
fails.
Make resolver-dnsjava, -minidns initializer

and OSGi components.

There is really no need to treat them different then
resolver-javax. This also allows the removal of the DNSUtil.init() method.
Put the AccountManager in getInstance() in the map

thereby following the code guidelines.
Don't use IQReplyFilter in AccountManager

This is a follow up on 6caf2cbdb52 where IQReplyFilter was changed so
that getUser() must not return null. But this is the case in
AccountManager where no resource binding has taken place and the user is
therefore not set.

The fix is the same as in 6caf2cbdb52, instead of IQReplyFilter we
simply use a PacketIDFilter.
Make SASLMechanism.getAuthenticationText() return byte[]

every SASL Mechanism is designed as a byte array based protocol. XMPP
adds the constraint that the challenges and responses are send base64
encoded. It's therefore better API design to let getAuthenticationText()
return byte[] instead of String.
Remove smack-core sasl configuration

bring every class of smack-core and its dependencies in
scope of smack-sasl-(javax|provided).