add support for signing messages in compressed format

...this is the standard way to sign messages in bitcoin-qt. Note that the
format of a compressed signature, for messages, is quite distinct from DER
format, which is used in transactions. This commit also adds support for
recovering the public key from a signature, which is necessary for this. The
code for public key recover is taken from bitcoinjs-lib.
Merge pull request #459 from ryanxcharles/feature/message-signing

add support for signing messages in compressed format