Split backend up (refs #170)

* Moves cipher methods into a Ciphers class and hash methods to a Hashes class and makes them available inside Backend as pluralized attributes (e.g. ```backend.ciphers.create_encrypt_ctx()```)
* Renamed many of the methods since their purpose is now defined by their container class.

If this approach looks reasonable some additional tests should be written to validate the backend object's attributes and the docs should be updated.