JcloudsLocation in separate project

Moved configuration to typed keys to be more easily shared, tidied JcloudsLocation, extracted interfaces and classes (AbstractCloudMachineProvisioningLocation), and moved JcloudsLocation and all jclouds dependencies out of core to a separate project (wired back in for tests and all).

Because this has a tidy and a move, it may be helpful to review the individual commits (where I have separated tidies from moves).

I have tested common cases but I wouldn't be surprised if we've broken some edge cases.  However in the interest of avoiding merge conflicts (and supporting folks working on other cloud API's) I suggest we:

* merge this soon assuming it looks okay
* do more in-depth testing and bug fixing (and more tidies) soon after