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.
i suggest you create a separate class with util methods for ReserverdIP. This file is getting too big to manage. Please consider for near future