implement verifymessage

Moving this intp btcd rather than btcwallet. I'll send a PR to remove from btcwallet once this has been merge. See discussion at: https://github.com/conformal/btcwallet/pull/124#issuecomment-52983230

Question: what is your procedure for testing? I noticed that there is no rpcserver_test.go file.
If c.Address is a serialized pubkey and not a P2PKH address, this will always return false.  It must instead perform a different equality check depending on the concrete type of the addr interface variable, and then use address.String() (instead of EncodeAddress) since you want to compare the textual representation of either a pubkey or P2PKH address, not always a P2PKH address.

Or, a simpler way to do it (and what I would probably do) is to just use addr.EncodeAddress() and string compare that to address.EncodeAddress().  This doesn't read too well though, so it may be a good idea to rename some of the address variables (change addr to decodedAddr and address to reconstructedAddr?).