ENYO-591: Clean up DataList page assignment logic

We have recently had some issues (e.g. ENYO-575, BHV-18217) that
arose because DataList would sometimes assign invalid (negative)
page indices.

We made point fixes to address these specific issues (including
one fix that we knew was just a quickfix for a deeper issue), but
in the process it became apparent that some general cleanup in this
area would yield more understandable / maintainable code and
probably nip similar issues in the bud.

In this change, we:

* Consolidate page assignment logic, which was formerly done
  partially in refresh() and partially in resetToPosition(), into
  a single new  method, assignPageIndices()

* Incorporate logic originally implemented in Moonstone to be
  smarter about choosing whether to generate the preceding or
  following page along with our target page

* Document page assignment logic thoroughly with inline comments

* Refactor reset(), refresh() and resetToPosition() to be
  independent of one another while sharing common functionality

* Add a new optional argument, scrollerArgs, to scrollToIndex().
  This allows scrollToIndex() to be easily overridden in Moonstone
  (and potentially other libraries) without copying and pasting a lot of code.

Enyo-DCO-1.1-Signed-Off-By: Gray Norton (gray.norton@lge.com)
ENYO-591: Provide simpler mechanism for overriding scrollToControl

Our fix for ENYO-591 introduced an overly complex, awkward method
for subkinds of the DataList delegate to override scrollToControl.

Replacing that with something cleaner and simpler. (Thanks to Ryan
Duffy for the suggestion.)

Enyo-DCO-1.1-Signed-Off-By: Gray Norton (gray.norton@lge.com)
ENYO-591: Add invalid-page-index warning to 2.5 for QA purposes

At SoonGil Choi's request, adding warning to 2.5 to make it easier
for potential page-index issues to be discovered and reported by
QA, customer service, etc.

We think we have cleaned up the page-index assignment code to the
point where such errors will no longer occur, but since we have
recently suffered from a number of issues in this area and 2.5
will soon be released into production, we'll include this warning
to hedge our bets.

Enyo-DCO-1.1-Signed-Off-By: Gray Norton (gray.norton@lge.com)
Merge pull request #956 from enyojs/ENYO-591-graynorton-2.5

ENYO-591 (2.5)

Integrated-By: Aaron Tam (aaron.tam@lge.com)