IPv6: Add support for IPv6 on DeployVMCmd

Conflicts:

	api/src/com/cloud/api/commands/DeployVMCmd.java
	api/src/com/cloud/network/Network.java
	server/src/com/cloud/network/NetworkManagerImpl.java
IPv6: move assignPublicIp6Address() from NetworkManager to new Ipv6AddressManager

Don't want to involve IP address management code in NetworkManager.

Conflicts:

	server/src/com/cloud/configuration/DefaultComponentLibrary.java
	server/src/com/cloud/network/NetworkManager.java
	server/test/com/cloud/network/MockNetworkManagerImpl.java
	server/test/com/cloud/vpc/MockNetworkManagerImpl.java
IPv6: Verify if requested IPv4/IPv6 addresses are valid

Also rename NetUtils.isValidIPv6() to NetUtils.isValidIpv6()
IPv6: Add vlan overlap checking
IPv6: Rename public_ipv6_address to user_ipv6_address

Conflicts:

	server/src/com/cloud/configuration/DefaultComponentLibrary.java
	server/src/com/cloud/network/UserIpv6Address.java
	server/test/com/cloud/vpc/MockNetworkManagerImpl.java
IPv6: Disable untested features

Conflicts:

	api/src/com/cloud/api/commands/DeployVMCmd.java
IPv6: Check startipv6, endipv6 and ip6Gateway with ip range
IPv6: Fix ip address in range check
IPv6: CLOUDSTACK-1113: Fix the mechanism to find the usable IP in the IPv6

The new policy is:
1. Generate a random IP.
2. Find the next available IP, start from the generated IP.
3. If we cannot find an available IP after certain times(10000 by default,
network.ipv6.search.retry.max) retry, give up.