preserve scroll positioning between paths

first stab at the preserving scroll positioning when transitioning
between paths.

- creates a scroll manager object to keep track of last known scroll
  positions for each path (url)
- restores the scroll position in the afterModel callback

The scroll manager could be separated out for unit testing instead of
bundled into the PreserveScroll mixin. Also there's no mechanism for
cleaning up the scroll positions hash table for old paths, so we will
end up using more memory for continual application usage.