Make page browsing into a Fragment.

- The PageViewFragment now sits in a simple container in PageActivity, and
  can be replaced with other Fragments (will lead to Fragment-izing the
  rest of our Activities)
- The PageViewFragment is now a light container for the heavier
  PageViewFragmentInternal object. When a PageViewFragment goes in the
  backstack of the FragmentManager, the "internal" object can be fully
  disposed, thus allowing a large number of fragments in the backstack.
- Added a PageCache class, where Page objects are cached upon visiting new
  pages (Page objects are no longer written to savedInstanceState). In the
  future, the PageCache may be written/read from storage across app
  restarts.
- Improved pre-scrolling to a specific offset when going "back", by
  scrolling as soon as the section with that offset is loaded.

Change-Id: Icfc7b9a9c7f2cf7fc6f743d419646acb0b8a1a50