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`.
  * Investigate why *two* keys are passed to `makeECC` and whether they are a pair, or irrelevant.
  * Find 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.
The ability to purge `pyelliptic` from the imports. The `makeECC` is a temporary method anyway. See the updated PR description.