ImageryProviderViewModel improvements

1. Make ImageryProviderViewModel take a desciption object instead of parameters.  This makes the calling code much cleaner.
2. Have the ImageryProviderViewModel constructor take observables and add a new `fromConstants` function for easy creation.