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, and have iso codes.
```
WARNING: location {scope=ZONE, id=asia-east1-a, description=asia-east1-a, parent=asia-east1, iso3166Codes=[TW]}
Nov 06, 2014 9:38:50 AM org.jclouds.compute.internal.BaseComputeServiceLiveTest testGetAssignableLocations
WARNING: location {scope=ZONE, id=asia-east1-b, description=asia-east1-b, parent=asia-east1, iso3166Codes=[SG]}
Nov 06, 2014 9:38:50 AM org.jclouds.compute.internal.BaseComputeServiceLiveTest testGetAssignableLocations
WARNING: location {scope=ZONE, id=asia-east1-c, description=asia-east1-c, parent=asia-east1, iso3166Codes=[TW, SG]}
Nov 06, 2014 9:38:50 AM org.jclouds.compute.internal.BaseComputeServiceLiveTest testGetAssignableLocations
WARNING: location {scope=ZONE, id=europe-west1-a, description=europe-west1-a, parent=europe-west1, iso3166Codes=[IE]}
Nov 06, 2014 9:38:50 AM org.jclouds.compute.internal.BaseComputeServiceLiveTest testGetAssignableLocations
WARNING: location {scope=ZONE, id=europe-west1-b, description=europe-west1-b, parent=europe-west1, iso3166Codes=[BE]}
Nov 06, 2014 9:38:50 AM org.jclouds.compute.internal.BaseComputeServiceLiveTest testGetAssignableLocations
WARNING: location {scope=ZONE, id=europe-west1-c, description=europe-west1-c, parent=europe-west1, iso3166Codes=[IE, BE]}
Nov 06, 2014 9:38:50 AM org.jclouds.compute.internal.BaseComputeServiceLiveTest testGetAssignableLocations
WARNING: location {scope=ZONE, id=us-central1-a, description=us-central1-a, parent=us-central1, iso3166Codes=[US]}
Nov 06, 2014 9:38:50 AM org.jclouds.compute.internal.BaseComputeServiceLiveTest testGetAssignableLocations
WARNING: location {scope=ZONE, id=us-central1-b, description=us-central1-b, parent=us-central1, iso3166Codes=[US]}
Nov 06, 2014 9:38:50 AM org.jclouds.compute.internal.BaseComputeServiceLiveTest testGetAssignableLocations
WARNING: location {scope=ZONE, id=us-central1-f, description=us-central1-f, parent=us-central1, iso3166Codes=[US]}
```

This bloats the class a bit, and can be reused for EC2 etc. I can follow-up later and make that happen.