lnwallet: introduce the MessageSigner interface
lnwallet: introduce the MessageSigner interface

This commit introduces the MessageSigner interface which is an abstract
object capable of signing arbitrary messages with a target public key.
This interface will be used within the daemon for: signing channel
authentication proofs, signing node/channel announcements, and also to
possibly sign arbitrary messages in the future.

LightningNetwork/lnd,aakselrod/lnd,AndrewSamokhvalov/lnd,LightningNetwork/lnd,aakselrod/lnd,AndrewSamokhvalov/lnd,ddustin/lnd,ddustin/lnd