Break core ratchet out into libaxolotol.

1) Break the core cryptography functions out into libaxolotol.

2) The objective for this code is a Java library that isn't
   dependent on any Android functions.  However, while the
   code has been separated from any Android functionality,
   it is still an 'android library project' because of the
   JNI.
Reorganize session store load/store operations.
Collapse KeyExchangeMessage and KeyExchangeProcessor interfaces.
Move session construction and KeyExchangeMessage into libaxolotl.

1) Add plain two-way key exchange support libaxolotl by moving
   all the KeyExchangeMessage code there.

2) Move the bulk of KeyExchangeProcessor code to libaxolotl
   for setting up sessions based on retrieved prekeys, received
   prekeybundles, or exchanged key exchange messages.
SessionBuilder improvements, more extensive SessionBuilder tests.
Javadocs, and some minor refactoring.
Collapse SessionRecord, SessionState, and PreKeyRecord interfaces.
Add basic README.
Update README
Add "last resort" PreKey generation to KeyHelper.
Move identity key verification into libaxolotol.  With tests.
Add serialization helpers for IdentityKeyPair.
Make helper static.
Better FS Locking.
Add ed25519
Add first cut of protocol v3 support.

1) Use the new /v2/keys API for storing/retrieving prekey bundles.

2) For sessions built with PreKeyBundle and PreKeyWhisperMessage,
   use a v3 ratcheting session when available.
Collapse RatchetingSessionV2 and RatchetingSessionV3.
Add support for a compliant HKDF implementation.
Split HKDF secret derivation and parsing.
Add a 'verification tag' to incoming PreKeyWhisperMessage bundles.