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 have a few conventions in dasein: 
* for collection return types we use either T[] or Iterable<T>, 
* when returning such collection we never return a null, but an empty array or an empty iterable;
* we strive to help static code analysis tools by using relevant annotations on parameters and return values of all public methods, this also helps driver implementors a great deal;

Looking at the code, the return value of getTagsForDelete seem to always be converted to array by a calling method, so it would seem appropriate to return AutoScalingTag[] from this method to do the conversion at source.