Restructure Cryptogram class + new class + tests

Commit messages say it all, 

 fixed up the crypto class,
added a new class
added a ton of tests
did this with eric so four eyes have already gone over this but we will wait for someone other than us to do a final review here