GCE is missing ProviderMetadata and locations needed rework.

This change adds ProviderMetadata, which allows us to properly tag locations of zones. It also consolidates how locations are created and what's derived from them.

For example, you can see that now, zones are correctly linked to their region.
```
Nov 06, 2014 11:10:44 AM org.jclouds.compute.internal.BaseComputeServiceLiveTest testCompareSizes
INFO: smallest {id=us-central1-a/n1-standard-1, providerId=12907738072351752276, uri=https://www.googleapis.com/compute/v1/projects/jclouds-dev/zones/us-central1-a/machineTypes/n1-standard-1, name=n1-standard-1, uri=https://www.googleapis.com/compute/v1/projects/jclouds-dev/zones/us-central1-a/machineTypes/n1-standard-1, location={scope=ZONE, id=us-central1-a, description=us-central1-a, parent=us-central1}, processors=[{cores=1.0, speed=1.0}], ram=3840, hypervisor=kvm, supportsImage=ALWAYS_TRUE}
Nov 06, 2014 11:10:44 AM org.jclouds.compute.internal.BaseComputeServiceLiveTest testCompareSizes
INFO: fastest {id=asia-east1-a/n1-highcpu-16, providerId=4523206295868016186, uri=https://www.googleapis.com/compute/v1/projects/jclouds-dev/zones/asia-east1-a/machineTypes/n1-highcpu-16, name=n1-highcpu-16, uri=https://www.googleapis.com/compute/v1/projects/jclouds-dev/zones/asia-east1-a/machineTypes/n1-highcpu-16, location={scope=ZONE, id=asia-east1-a, description=asia-east1-a, parent=asia-east1}, processors=[{cores=16.0, speed=1.0}], ram=14746, hypervisor=kvm, supportsImage=ALWAYS_TRUE}
Nov 06, 2014 11:10:44 AM org.jclouds.compute.internal.BaseComputeServiceLiveTest testCompareSizes
INFO: biggest {id=asia-east1-a/n1-highmem-16, providerId=5587987846282440416, uri=https://www.googleapis.com/compute/v1/projects/jclouds-dev/zones/asia-east1-a/machineTypes/n1-highmem-16, name=n1-highmem-16, uri=https://www.googleapis.com/compute/v1/projects/jclouds-dev/zones/asia-east1-a/machineTypes/n1-highmem-16, location={scope=ZONE, id=asia-east1-a, description=asia-east1-a, parent=asia-east1}, processors=[{cores=16.0, speed=1.0}], ram=106496, hypervisor=kvm, supportsImage=ALWAYS_TRUE}
```

reason I say that is that the cost of the network request to getOperation is 150ms. I can't imagine we want a granularity much more fine grained than seconds. Moreover, this is very likely duplicating a different property already available.