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.
You are right Amar. Looks like the checking for reserved ip before delete is unnecessary. If not exists then check for IP will throw 'Reserved IP not exists' exception, same exception will be thrown if we try to delete an IP that does not exists. I will remove this check.