JCLOUDS-642: InternalUrl fallback

This PR provides the necessary changes for [JCLOUDS-642](https://issues.apache.org/jira/browse/JCLOUDS-642). `InternalURL` should fallback to use `publicUrl` if the `internalUrl` is not present for the endpoint.
 
This is a WIP pending testing and could use feedback on the changes in the meantime. DO NOT MERGE! Thx!
Could also be [`MoreObjects.firstNonNull`](http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/base/MoreObjects.html#firstNonNull\(T, T\))