ENYO-2744: moon/DataList: Restore state on render
ENYO-2744: moon/DataList: Restore state on render

We have recently started getting more aggressive about view
virtualization for performance reasons. One tactic in this area
involves tearing down the DOM representation of a Control and then
restoring it later as needed ("view caching").

In the case where the view being cached / restored contains a
DataList, the state of the view was not being preserved as expected
because DataList effectively resets upon being (re-)rendered.

The proper fix for this issue would involve rethinking the DataList
lifecycle with view-virtualization scenarios in mind, but this
would be a significant effort and the current DataList is on a
relatively short road to replacement, so for now we'll go with a
lighter-weight, Moonstone-specific solution.

In a nutshell, we remember both the current focus and the scroll
position (as aproximated by the range of elements currently in
view) when the list is torn down, and optionally restore this state
when the list is re-rendered.

These changes necessitated a number of small tweaks to Enyo core,
so this change is dependent on those changes.

Enyo-DCO-1.1-Signed-Off-By: Gray Norton (gray.norton@lge.com)

enyojs/moonstone