refactor crypto -> CryptoImpl, add new Crypto, that matches what CfB announced
one additional test
some more docs