[MERGEABLE] Splitview With Image and Custom View Support

https://trello.com/c/A22yIIal/1282-splitview-add-view-provider-mechanics

This PR is can be merged into jeff/splitview-1x2 when ready
* Adds a MainViewFactory for view factories
* Adds support for images
* Adds support for extensible custom views
* Adds support for 1-off views
* Adds a view state cache singleton
* Fixes #6356

So I assume we've added those to the list of extensions that we know will be 100% broken unless they make changes?

This should `throw new Error()` instead of calling `deprecationWarning()` though -- as Randy pointed out, there's no way anyone calling this will work right, so we should fail fast instead of showing a misleading warning message.  We do this for some cases in NativeFileSystem already.