Refactor and test crypto_util. Wrap pyelliptic.

### Motivation
There should be one (and preferably only one) place where `pyelliptic` and `OpenSSL` touch the codebase. The key processing should be as transparent and documented as possible, without any magic strings. All requests for cryptographic operations must pass through a strict API, which shall be tested extensively.

### Changelog
* Define a `Cryptor` class with strict API to wrap `pyelliptic`.
* Replace `makePubCryptor` and `makePrivCryptor` by `Cryptor` class.
* Abstract all other uses of `pyelliptic.ECC` via the `makeECC` factory method. This method is temporary and its use is deprecated. All crypto code should eventually pass through `Cryptor`.
* Abstract and document key processing. Explicitly name all constants involved. 
* Test the entire `crypto_util` module.

### Roadmap:
* The `makeECC` method should be abolished. This entails:
  * Installing a `get_pubkey()` method on `Cryptor`.
  * Investigating why *two* keys are passed to `makeECC` and whether they are a pair, or irrelevant.
  * Finding a way to wrap `raw_privkey_hex` so that it can be used to instantiate `Cryptor`.
* Create a `Peer` (or `Identity`) class, which *is-a* `guid.GUIDMixin` and *is-a* `crypto_util.Cryptor` and *has-a* `CryptoConnection`. This means thinning the `connection.py` and `transport.py` module down to bare minimum. In order to have a semantically sound encapsulation, perhaps the `guid.GUIDMixin` should be subclassed and embelished with more attributes.

@yagoulas will work on the above, with me helping.
It's not going to vanish altogether. It will be imported from the `crypto_util` module, which will provide a crypto API to the rest of the project. That's my purpose.