refactor crypto operations into separate class

This is to avoid pollution of sensitive code with Androidy things like
Context and SharedPreferences. It also makes the crypto functions
testable without making the API public.
rename important constants for clarity

knowing whether LENGTH refers to bits or bytes is an important
distinction. shame that the various APIs don't standardize :|
register the spongycastle JCE provider where it's used
typo
bump date in LICENSE
add adaptive PBKDF2 iteration calibration function

Currently not hooked up.

Thanks to briar project for the algorithm: briar.sourceforge.net