[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

@JeffryBooher Where did you find that syntax? Interesting that I see `@typedef` listed for the [Google closure compiler](https://developers.google.com/closure/compiler/docs/js-for-compiler), but not for [JSDocs Tag Reference](https://code.google.com/p/jsdoc-toolkit/wiki/TagReference).

As far as being on 1 line, I can't find a reference to it, but I seem to recall that JSDocs allows for both single-line or multiple-line format, but those are different code paths in the apify app, so support needs to be enabled.