Implement proper secp256k1 signing

The previous secp256k1 library failed when signing > 64 bytes. We're now using
the secp256k1 curve directly with the ECDSA package to sign and verify
signatures.

This means that we've also had to write DER encoding for our signatures.

All is good.