Adds version support to Message.verifyMessage

As I mentioned in #98, at this time you cannot verify a message that is not on the main bitcoin network.

This is due to the address being derived from the recovered public key is by default a bitcoin address.

This pull request resolves this issue by making less assumptions about the `address` input parameter, letting it be a `String`, `Address` or even byte array (consistent with the `new Address` constructor); and then derives the address from the version of the input address instead of defaulting.