Refactor public key derivation and packet headers

Refactor public key derivation
-------------------------------------
Deriving the public key from a private key was possible using two functions:
  pointMult in class_addressGenerator uses OpenSSL and 'raw' bytestrings
  privtopub in pyelliptic.arithmetic is pure python and uses hex strings

pointMult is fastest due to its use of OpenSSL.

privtopub uses a grossly inefficient method to convert to/from hex and in most cases the code that calls privtopub (or its highlevelcrypto wrapper privToPub) has to unneccessarily hexify the private key parameter and dehexify the public key result.

Obviously pointMult is the winner and it has been moved to highlevelcrypto while all calls to arithmetic.privtopub have been replaced to use highlevelcrypto.pointMult or highlevelcrypto.privToPub

This should result in a performance gain by avoiding needless hex conversions although there are still more pointless conversions to eradicate.


Refactor handling of packet headers
----------------------------------------------
Clean up code that handles headers

Retreiving the header fields is now as simple as calling shared.Header.unpack.
The header size should now be obtained from shared.Header.size rather than using a literal

Generating a header is now as simple as calling CreatePacket with the desired command and optional payload. The command does not need to be right-padded with nulls while the length and checksum is automatically calculated.