Improve the design of AzureProfile and AzurePowerShell

- Changed static factories on AzurePowerShell to be members and added initializer to the factories as static property
- Updated AzureProfile so it hold info in memory and saves the data on Dispose
- Remove DefaultSubscription property from AzureEnvironment and moved it as Default property under subscription
this should take a file path to the custom profile