Implement FromStr for IpAddr and SocketAddr

Better implementation than that in rt::uv::net, because it:

* parses socket address, not just IP
* rejects invalid output (like IPv4 octet value above 255)
* handles various ipv4-in-ipv6 addresses, like 2001:db8:122:344::192.0.2.33
  (see http://tools.ietf.org/html/rfc6052 for example)
* does not allocate heap memory
* have unit tests
Use FromStr for IpAddr in rt::uv::net