[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

http://usejsdoc.org/tags-typedef.html

I can't find anything on single line specifically but every example I've seen has used a single line appify kind of behaves unpredictably.  It will chase a tag across multiple lines but it leaves the trailing } and treats it as part of the description text.  It also merges text from multiple lines without putting any whitespace between the last item on the previous line and the first item on the next line.  It strips out any whitespace that was previously before the first or after the last.