Synchronize bindingRequired

Right after PacketReader receives the 'success' stanza, indicating
successful SASL authentication, it opens a new stream. The login
process continues in another thread and checks for bindingRequired,
which may not have been set a this point yet.

bindResourceAndEstablishSession() now waits until either the binding
feature stanza is parsed or the default packet timeout occurs.
Properly sync PacketWriter's queue

by using a custom ArrayBlockingQueueWithShutdown. Fixes a race condition
where nextpacket() would wait for a notification that would never
arrive, because all all put(Packet) calls are still blocking.

SMACK-560
Make sendPacket throw NotConnectedException

also use XMPPConnection.sendPacket() instead of
PacketWriter.sendPacket() in XMPPTCPConnection.
Update javadoc for (get|set)CustomSSLContext()
Fix NPE in JavaxResolver

Attributes.get(String) could return 'null'. Take care of that case.
Move duplicate code into XMPPConnection

from XMPPTCPConnection and XMPPBOSHConnection.
Add newlines to smack-core/build.gradle
Don't make non-core packages a fragment bundle

as there exists no longer a dependency from smack (now smack-core) to
smackx (now mostly smack-extensions). Therefore this approach is no
longer needed.

SMACK-343
Fix appendix in smack-core

Now that we do not longer use the appendix for the subproject
name (91fd15) we need to set instead of appending the appendix in
smack-core.
Synchronize PacketWriter shutdown

try the best to send the queue elements and the closing stream element.
Fix NPE in DiscoverInfo.Identities XmlStringBuilder

The 'name' attribute of an service discovery identity is
optional. Thanks to Jens Offenbach for reporting.
Reset usingTLS in XMPPTCPConnection.shutdown()
Add parseContentDepthTest()
Use StringBuilder in parseContentDepth()

instead of StringBuffer, which comes with unnecessary synchronization
overhead.
Fix description of subprojects POMs file

by adding evaluationDependsOnChildren() on the root project. Thanks to
Peter Niederwieser for the hint.
Make ProviderManager static

also remove initialize() from ProviderFileLoader, by simply putting the
code into the constructor.
Tell Gradle to download javadoc

when creating the classpath for eclipse.
Make IQ attributes final in parseIQ()
Add 'null' check to parseContentDepth

Does not fix the actual problem, but at least prevents resource
allocation until OOM.
Update Presence.java

No code changes. Proofread API docs for Presence.java
Fixed grammar / unclear sentences in some javadocs.
Changed some nouns to be more consistent with API terminology.
Fixed some typos.