Implement shouldOverrideUrlLoading of WebViewClient

This method is called every time a link in WebView is clicked, it is
used to determine whether the link should be opened in this
WebView(return false) or by host application(return true), which in the
later situation, ususally handled using an implicit Intent to open it in
another application.
The point to overriding this method is: intercept the url, check if it's
link can be found in contents table, if yes, then update navigation list
current reading position to this item, this allows the previous and next
button to function in a predictable way, that is the buttons will go to
the previous or next page based on the newly open page.
Use ImageButton instead of Button in reading control

The previous and next button now use ImageButton instead. It's a
borderless image button, with icon as src, and inherit a default button
background.
Update previous and next button reference in reading

Change 'Button' to 'ImageButton' in reading activity.
Update strings_activity_booklist.xml file
Remove unused color
Remove unused drawables under /drawable folder
Add history go backward and forward icons
Add backward and forward buttons to reading layout

The buttons are ImageButton s, the layout file is fragment_reading.xml,
notice this is not a layout for any fragment, but for a ViewStub in
reading activity layout.
Update strings_activity_reading.xml file
Find backward and forward buttons in reading activity
Implement backward and forward onClick listener

The listeners load a page from web history just like a web browser's
back and forth buttons. But the button is hidden if no history exists in
that direction.
Hide or show history buttons in onPageFinished

The web history will change after each page is loaded, so it's necessary
to hide or show the buttons here rather than in onClick listener or
shouldOverrideUrlLoading.
Resign mBookView.getScrollY to mLastPosition in onPause

This point here is to emphasize the fact that mLastPosition always holds
the value of the page's scroll position in Y axis.
Add mHistoryStack<String> field

This Stack holds a stack of forward navigation history, unlike the
WebHistoryList, it is linear, which means you can only go forward and go
back, when you go back, you can not go the last forward again.
This makes page jumping easy to navigate, since after the user proceeds,
he ususally just wants to go back.
This previous model using WebView.goBack/Forward will be dropped.
Save current page url and position before jumping

When the user click an in-page link, shouldOverrideUrlLoading is called
before the url will be loaded, save the mBookView.getOriginalUrl here
because it is still the url of the current page. When the user clicks
the go back button, we need the url and position to go to exactly where
the user has left.
Rewrite history back button onClick listener

This version of onClick listener uses mHistoryStack to load the url and
also post a Runnable after loadUrl to scroll the page position.
Set backward visibility according to mHistoryStack

The backward button is set to invisible in onPageFinished when
mHistoryStack is empty.
Implement mScrollRunnable

The Runnable is exactly the same one you use in prepareReadingSession.
Update prepareReadingSession to use mScrollRunnable
Close Cursor in prepareReadingSession

The Cursor is not closed, I missed this, and just found out, so I close
it now.