Remove 1mod8

https://github.com/WhisperSystems/TextSecure/commit/27b5bf54cc2ddd809eedcbb627dbda30d77b2eae
Refactor crypto.js and native client interface

NB: this diff is best viewed with --ignore-whitespace

Distills crypto.js down to the hard cryptoey bones. It pulls from
webcrypto for aes and hmac, and from native client for curve25519 stuff
or potentially another object implementing the handful of needed
curve25519 functions.

Everything else formerly known as crypto, including session storage and
management, axolotl, etc.. is now protocol.js. The separation is not
quite perfect, but it's a big step.

nativeclient.js now enables talking to the native client module through
a high level interface as well as registering callbacks that will be
executed once the module is loaded. And it has tests!

Finally, this commit removes all references to the "testing_only"
object, preferring to run tests on textsecure.crypto instead.
Removed now unused copy of getRandomBytes
Split crypto_test into crypto, protocol and helpers tests
Abstract out curve25519 tests

Also rename the internal variable in crypto.js to be a little more
explicit about which curve we're dealing with.
Abstract nativeclient callback logic

The nativeclient.js module overrides
window.textsecure.registerOnLoadFunction with its own version. Otherwise
helpers will define a trivial placeholder for same.

The flag textsecure.NATIVE_CLIENT can be set anywhere ahead of
nativeclient.js, but is only acted on in nativeclient.js,
and crypto.js.
Wrap some long lines
Simplify a test

Protobufs are loaded already
Add sass stylesheets
Build unminified manifest.css from sources
Remove unused stylesheets

Move the remaining to /stylesheets
Remove curve25519.js

This implementation isn't doing us any good since it doesn't have all
the stuff we need for v3.
Remove stray curve25519.js include
Add emscripten-compiled curve25519 module

Build with `grunt compile && grunt concat:curve25519` after installing
emscripten.

Enable by either (a) not loading nativeclient.js or (b) setting
`textsecure.NATIVE_CLIENT = false` before loading nativeclient.js.
Remove stray debugging test
Clean up after crazy emscripten fueled rager

Man you shoulda been there. Code was compiling all over the damn place.
It was wild.

Seriously though. Ignore that intermediate compiled file. What happens
in build stays in build.
Hooray for options
Finish abstracting native client

Firstly, don't initialize textsecure.nativclient unless the browser
supports it. The mimetype-check trick is hewn from nacl-common.js.

Secondly, nativeclient crypto functions will all automatically wait for
the module to load before sending messages, so we needn't register any
onload callbacks outside nativeclient.js. (Previously, if you wanted to
do crypto with native client, you would have to register a call back and
wait for the module to load.) Now that the native client crypto is
encapsulated behind a nice interface, it can handle all that
onload-callback jazz internally: if the module isn't loaded when you
call a nativeclient function, return a promise that waits for the load
callback, and eventually resolves with the result of the requested
command. This removes the need for textsecure.registerOnLoadCallback.

Finally, although native client has its quirks, it's significantly
faster than the alternative (emscripten compiled js), so this commit
also lets the crypto backend use native client opportunistically, if
it's available, falling back to js if not, which should make us
compatible with older versions of chrome and chromium.
Fixup curve25519 module

Rename methods on the curve25519 interface to be a bit more high level.
Cleanup emscripten wrapper class, wrap long lines and such. Also add a
grunt task alias for building the emscripten compiled curve
implementation.
Avoid breaking changes in qrcode library

Due to syntax errors in its bower.json.
https://github.com/davidshimjs/qrcodejs/pull/39