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.
leveraging casing for difference parameter is not encourage, as this hurts command usability. Have we run out of options here?