Implement tox_load

Loading encrypted files is currently unsupported. This commit also adds
a length functionality for the ByteArray SBRM class.
Clarify documentation for encrypted load
Don't throw IAE on non-UTF-8 messages

The Low-Level API shouldn't care about the encoding, it will send
whatever it is given to send. However, the suggestion of sending UTF-8
only will remain in the javadoc in order to facilitate the
implementation of STS-compliant Tox clients.
Implement friend add functions

Up to now, the ToxSimpleChat interface incorrectly returned void for
these functions. This has been corrected, it now returns the
friendnumber.
Specify behaviour for unknown friend numbers

Introduce unchecked NoSuchFriendException, make all methods that accept
a friendNumber throw this exception.
Implement callback registration code
Implement clientID and friendNumber functions

Also use nullptr instead of NULL wherever possible.
Add new class to CmakeLists.txt