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.