Until now the delegation was checked when receiving an avahello message.
When this happens we don't have the proof, so this check fails and the
node gets banned. The signature contained in the avahello message was
not checked.
This diff add a sig field to the AvalancheState to store the signature
until it can be checked, and delays the verification of the delegation
until after we receive the proof from the peer.
The avahello signature verification is implemented, and the node is
banned if his signature is wrong because signature verification is
expensive.
A test is added to ensure that this banning happens. A mininode sends a
valid delegation and an invalid signature in an avahello message, then
it sends a valid proof corresponding to the delegation. The signature
verification then fails.