Correctly parse remote address

Use net.SplitHostPort to extract the host from (*net.Request).RemoteAddr,
rather than the naive string split, which fails on IPV6 addresses. If
net.SplitHostPort fails, use the raw value of (*http.Request).RemoteAddr for
the address field of log lines.

Test cases for IPV6 are added, with and without a port specified.
Merge pull request #7 from stevvooe/fix/correctly-split-remote-addr

Correctly parse remote address