Add (IQ|PacketExtension)IntrospectionProvider

This simplifies code as there is no longer a distinction between
"normal" providers and introspection providers in ProviderManager
necessary.

It's also easier to get an idea where introspection is used for parsing.
Use switch-case in PacketParserUtils.parseContentDepthWithoutRoundtrip()
Set conditionText to null if it's the empty string

This fixes e.g. IllegalArgumentException "'conflict' can not contain a
condition text", when receiving elements like

<stream:error>
  <conflict xmlns='urn:ietf:params:xml:ns:xmpp-streams'></conflict>
  <text xml:lang='' xmlns='urn:ietf:params:xml:ns:xmpp-streams'>
    Replaced by new connection
  </text>
</sream:error>

(ejabberd does this)
Prefer AndroidDebugger over JulDebugger

since most JUL implementations do not print log messages of level
FINE (or lower) per default. Therefore the debugging output is not seen
by the user who wants to debug and a second step is required to
configure JUL to also log FINE or lower log messages to the console.
Ensure that the hash value is put in lowercase on the wire
Fix nodeVer generation for local caps information

This was broken with 5dd97a363c4c3c4ea6c7cc60501368240e8ca2ed, where
currentCapsVersion was changed from String to CapsVersionAndHash.
Merge remote-tracking branch 'flow/master'

Conflicts:
	smack-core/src/main/java/org/jivesoftware/smack/packet/StreamError.java