TWC Patch 2014-08-28

Apologies for the large PR again. In the currents of change I haven't been able to get a process in place to do PRs per patch/feature. As of tomorrow that process should be in place though, so you should be seeing much smaller patches from us.

Changes:
- New operation to the MachineImageSupport: copyImage, which copies given image to another region.
- Main property to RoutingTable -- allows identification of main/default routetables over others.
- Support for attributes (crossDataCenter, timeout, etc) on load balancers.
- Add/remove listener support to load balancers.
- Ability to set firewalls when creating load balancer.
- Add health check info to LoadBalancer.
- Add volume info to machine image.
- Add set/list notificationConfigs to AutoScalingSupport.
- Added synchronous call to create tags.
- Deprecated subnetIds property (comma separated string) and added new String array for subnetIds in Scaling Groups.
We didn't see a clear path to that end, so we put the responsibility on client/user to set the defaults.  Would it make sense for us to add a new boolean, and do true/false checks so we end up with something like...

```java
if ( options.isCrossDataCenter ) {
  parameters.put("LoadBalancerAttributes.CrossZoneLoadBalancing.Enabled", String.valueOf(options.isCrossDataCenter()));
}
if( options.isConnectionDraining() ) {
  parameters.put("LoadBalancerAttributes.ConnectionDraining.Enabled", String.valueOf(options.isConnectionDraining()));
  parameters.put("LoadBalancerAttributes.ConnectionDraining.Timeout", String.valueOf(options.getConnectionDrainingTimeout()));
}
if ( options.isModifyConnectionTimeout() ) {
  parameters.put("LoadBalancerAttributes.ConnectionSettings.IdleTimeout", String.valueOf(options.getIdleConnectionTimeout()));
}
```

?