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
Change AzureProfile so it works on any profile file
Add upgrade scenario for custom files.
Merge pull request #2793 from ogail/profile

Improve the design of AzureProfile and AzurePowerShell