Crypto restructure
This MR isolates the cryptographic primitives implementation in such a way that multiplatform implementations can be easily added. It also restructures the whole cipher/protocol business in a way that is a bit more clear.
This PR includes cosmetic changes like header renames, and minor todos because I fixed them as I stumbled upon them