Make ip address handling tcp agnostic in preparation for other ip protocols

- move tcp_address.[c|h]pp to ip_address.[c|h]pp and make it protocol(tcp)
agnostic.
- teach everything that cared about tcp_address about ip_address.
- ip_address::to_string() now takes a string to indicate the protocol.
- ip_address_mask::to_string() takes a protocol string but doesn't use
  or need it??