Cryptography Typing Overhaul

Changed it so that all major crypto types are byte arrays of an explicit
size. This adds a level of security in that the byte arrays are
guaranteed to be the right size, but it also makes some forms of copying
and concatenating easier.

Most of all, the fact that everything is now typed should reduce
confusion and make it easier to change things in the future.