JCLOUDS-607: ComputeService.createNodesInGroup throws NPE on FloatingIPApi.create()

AllocateAndAddFloatingIpToNode gained private method 'allocateFloatingIPForNode' for internally allocating an IP by first using FloatingIPApi.create() and then if necessary iterate through available IP's found in FloatingIPApi.list().\nInsufficientResourcesException gained constructor for passing in only a String message.\nAllocateAndAddFloatingIpToNodeExpectTest gained tester 'testAllocateWhenAllocationFailsOn404LookupUnusedIpAddToServerAndUpdatesNodeMetadata'

Private method 'allocateFloatingIPForNode' will now return an Optional<FloatingIP> instead of null in accordance with jclouds coding standards

Added class 'NodeAndNovaTemplateOptions' which acts as a simple binary data-structure for holding a NodeMetadata object along with a NovaTemplateOptions object.\nAllocateAndAddFloatingIpToNode has been refactored to accept a NodeAndNovaTemplateOptions object rather than a NodeMetadata.\nNovaTemplateOptions gained accessor floatingIpPoolNames

Added license to NodeAndNovaTemplateOptions.\nWill now use 'Atomics.newReference(ref)' instead of 'new AtomicRerence(ref)