Introduce whitelisted peers.

This adds a `-whitelist` option to specify subnet ranges from which peers that connect are whitelisted. In addition, there is a `-whitebind` option which works like `-bind`, except peers connecting to it are also whitelisted (allowing a separate listen port for trusted connections).

Being whitelisted has two effects (for now):
* They are immune to DoS banning.
* Transactions they broadcast (which are valid) are always relayed, even if they were already in the mempool. This means that a node can function as a gateway for a local network, and that rebroadcasts from the local network will work as expected.

Whitelisting replaces the magic exemption localhost had for DoS banning, which implies hidden service connects (from a localhost Tor node) were incorrectly immune to DoS banning as well. This old behaviour is removed for that reason, but can be restored using `-whitelist=127.0.0.1` or `-whitelist=::1`. `-whitebind` is safer to use in case non-trusted localhost connections are expected (like hidden services).

This is a partial replacement for #3403 (but does not add RPC commands to make whitelisting dynamic). Also, hhitelisting becomes a boolean property of a peer here (set at connect time), rather than defined by a set of netmasks. This means we don't need to match the address on every invocation of a relay.
As I pointed out in #4378 this isn't the case. (though I'm glad you're reading the code!)