[HBASE-11097] Make HBase compatible with IPv6

Author: everyoung

Summary:
Wiki page at https://our.intern.facebook.com/intern/wiki/index.php/HBase/HBase_IPv6_Compatible

1. Add TestIPv6HServerInfo and make HServerInfo recognize IPv6 address,
    using HostAndPort & InternetDomainNames to verify hostname and port
    instead of using regular expression for ServerManager and HServerInfo.
2. Add HQuorumPeerConfig according to trunk version of org.apache.zookeeper.server.quorum.QuorumPeerConfig,
    fix Zookeeper IPv6 connection problem following the Zookeeper convention at https://phabricator.fb.com/D1226868.
    The IPv6 address in zoo.cfg must be enclosed with []. So the parsing and createZK parameters needs to be changed.
3. Fix Log naming issues, serverName.replace(":", "%3A") to create LOG names in HLog.java,
    ZKSplitLog.encode(workername) to create tmp LOG name in SplitLogMananer and SplitLogWorker (ZKSplitLog.decode to recover).
    Not using encode(serverName) for HLog.java because it will also convert ',' and not compatible with IPv4 addresses.
4. Mark ReplicationLogCleaner and ReplicationZookeeperWrapper deprecated as Jiqing indicated.
5. Add config to let local machine use IPv6 address if possible in HMaster and HRegionServer.
6. fix TableInputFormatBase$reverseDNS to use appropriate API.
7. Use IPv6AddressTruncationMapping instead of IPv4AddressTruncationMapping in RackManager.java.
7. The IPv6 address for HBase can be the raw string or enclosed with [].

Test Plan: All unit tests and new tests

Reviewers: aaiyer, liyintang, akshay, manukranthk

Reviewed By: manukranthk

CC: hbase-dev@, manukranthk

Differential Revision: https://phabricator.fb.com/D1265426

Task ID: 3586081

git-svn-id: https://svn.apache.org/repos/asf/hbase/branches/0.89-fb@1591434 13f79535-47bb-0310-9956-ffa450edef68