Changes from review comments by @aledsage

- Javadoc on interface
- Added notes about synchronisation in sub-classes
- Logged list of returned sub-locations
Further small changes

- Better documentation for main interface
- Swap createNode(flags) and createNode(loc, flags) logic and actually use the passed in location
Fix availability zone retrieval

- Add public getAllSubLocations method to AvailabilityZoneExtension
- Return all zones if no maximum number specified