Allow IPv6 API endpoints; Improved IPv4/IPv6 addresses handling.

Summary of the changes:
 * API IPv6 endpoints are cached, just like IPv4 ones.
 * Introduced network.ScopeLinkLocal and detection.
 * Improved addresses selection (public/internal) in
   the network package not to discriminate IPv6 over IPv4.
 * Added network.PreferIPv6 global flag (false by default)
   as a less intrusive way to tweak addresses selection to
   prefer IPv6 addresses when available. This needs to be
   exposed as an environment setting in a follow-up.
 * Added a lot of tests for both IPv4 and IPv6 addresses
   in the network package and in the openstack provider.
 * As a side-effect, fixed bug http://pad.lv/1328429.

With this PR, we no longer favor IPv4 over IPv6, and this allows us to
improve IPv6 support across the board. Some follow-up will be needed
to fix a few minor issues, like not verifying addesses of type
"hostname" (lots of tests need to stop using hostnames like
"zerotwothreefour" or "public", etc. and start using "example.com" or
subdomains thereof). Another improvement will be to expose the
PreferIPv6 flag to the end-user somehow.
One can't use fe80:: addresses without specifying ScopeID: fe80::1%eth0
So it makes sense to forbid usage of these addresses without specified ScopeID and make tests for addresses with ScopeID