Allow drag-n-drop to auto-scroll when near top/bottom of dirlist.

Couple of things this CL did:
1. Refactored ViewScroller to a separate file, renamed to
"ViewAutoScroller"
2. New interfaces called UIDelegate and CalculationDelegate such that
classes can provide necessary information for smooth scrolling
3. DirectoryDragListener implementation of #2's interface in order to
have auto scrolling when user's cursor is near top/bottom of screen

Currently since the status bar, action bar, and menu bar don't have a
drag listener, we don't get a callback on them, and thus we lose the
ability to get positions/scroll if user flings too quickly to those
areas. There might be some way to circumvent this since hovering over
these areas get a DRAG_EXIT event, but that should be 1) a separate
discussion and 2) a separate CL in my opinion.

Bug: 28696867
Change-Id: I61eba93aa60efd1638b3c0cd79db3f0d083b5e6d
(cherry picked from commit ad3a323585e43d06f632d85759beaf670f541997)
8 files changed