JCLOUDS-664:Implement OSImageToImage Function

implement OSImageToImage Function.
Changes to API implementation
1- Added PublisherName to OSImage
2-Changed Locations list to Location 
good start, but looking at `images.xml` you should be able to retrieve more information out of it.

It is really important for portability that the list of images returned by a jclouds provider contain as much details as possible.
For example, `osFamily` and `osVersion` could be generated using something like
```
      OsFamily osFamily = OperatingSystems.osFamily().apply(osImage.label());
      String osVersion = OperatingSystems.version().apply(osImage);
```
where `OperatingSystems` util class will make things like
```
   public static Function<String, OsFamily> osFamily() {
      return new Function<String, OsFamily>() {
         @Override
         public OsFamily apply(final String label) {
            if (label != null) {
               if (label.contains(CENTOS)) return OsFamily.CENTOS;
               else if (label.contains(SUSE)) return OsFamily.SUSE;
               else if (label.contains(UBUNTU)) return OsFamily.UBUNTU;
               else if (label.contains(WINDOWS)) return OsFamily.WINDOWS;
            }
            return OsFamily.UNRECOGNIZED;
         }
      };
   }
```
and similarly for `osVersion`. Make sense?