Move crypto functions to own crypto module
this MR moves crypto functions to their own crypto module. This way, the storage
mod.rs is a bit cleaned up. There are also new unit tests to test the crypto functions.
I used the current implementation and did not use libsodiumoxide to keep the MR as small as possible.
The new integrations tests may seem a bit weird but they test only if a storage that is created with a current implementation can be opened with newer/future implementations. This way it is ensured that the new crypto functions can open files that were created with the previous implementation.