[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

* I don't think `commandData` details need to be described here since this data is not used here (i.e. it's being passed through).
* Also seems like it would be better described in a `@typedef`.
* comment goes to column 135 -- too wide