Add support for secure pairing and input encryption to fix GFE 2.1 compatibility.

TODO:
Needs a LimelightCryptoProvider implementation for each platform to work.
Untested (and probably broken) on Android.
Needs more testing in general, especially in corner cases.
Cleanup and bugfix pairing code.
Move Base64 encoding responsibilities out to the CryptoProviders for Android