Initial refactoring of backend specific contexts.
Don't forget to provide an interface.
Rename _OneTimeCipherContext
Merge pull request #178 from dreid/composable-contexts

[WIP] Reduce the backend's API surface by making it a vendor of implementation specific CipherContext providers.