Add SCRAM-SHA1 support

Thanks to Stefan Karlsson for helping with the implementation.

Also add SASLMechanism.checkIfSuccessfulOrThrow(), to increase the
security by verifying the mechanisms state at the end of SASL
authentication.

The requirement of SASLPrep made it neccessary to raise the minimum
Android API level of Smack from 8 to 9.

Refactor SHA1 functions out of StringUtils into SHA1 utility class.

Add MAC utility class.

Make DummyConnection getSentpacket() methods use generics to make unit
testing SCRAM-SHA1 easier.

Fixes SMACK-398
Fix NPE in MUCItem if role is null
Fix NPE in MultiUserChatManager.getMultiUserchat()

Since the HashMap has WeakReferences as values, there are two levels at
which values could be null.
Setup Roster before sending initial presence

Thanks to Phil Winder for reporting the issue.
Merge branch 'master' into scram