Added support for VM extensions, static IPs, specification of arbitrary vm sizes and reserved IPs.

This PR contains changes for support for VM extensions, static IPs, specification of arbitrary vm sizes and reserved IPs.
createHostedService calls back into createHostedService2 which calls back into createHostedService3. I added a step between createHostedService and createHostedService2, so I renamed 2 to 3 and added the new logic to 2. Unfortunately Node.js' "callback hell" makes it so that for every continuation we have to name a function, and I am running out of more meaningful names :)