Keep track of books in a local database

Everytime we start, we check ~/Books for additional files and add them
into the database.
Check for existence of files before adding to file list

Perhaps we should also worry about permissions, but that's a detail.
Sorting options for book list
Record times of reading books
Split up main.qml into components
Fix from the Department of Redundancy Department
Communication between frontend and WebView

QtWebKit.experimental has several functions for communicating between
QML and Javascript in the WebView.  I was hoping to use
postMessage/onMessageReceived, but I didn't get them to work.  So
instead, we have a message framework of evaluating javascript and
changing the document title.  This is mostly kept in separate libraries,
so we can swap them out in the future.

With this, we can pass the table of contents out to the QML level and
let selections there change the page of the book.
Add table of contents and back/forward buttons
Make things work when launched from directory other than build

This probably needs more work to make it work when installed.
Allow opening a file from the command line

If this file isn't in the library, add it.

There's a silly work-around here, because qmlscene will grab any and all
arguments it can.  So we still all of the arguments to the shell script
in a single named argument that qmlscene doesn't know what to do with,
and so passes on to the running program.  Since we only want a single
filename now, it sorta works.  But if we want to do anything more
complicated, it's going to be a pain.
Move to Quazip from JSZip for unzipping epub files

Quazip is in the Ubuntu repositories, but that version doesn't work for
some reason.  So we include the source here.
Remove some debugging code

Also, disable qDebug in QHttpServer, since this was just annoying.
Serve static files from C++

This avoids silly round-tripping through base64 encodings.
Pass contents directly to BookPage, instead of going through WebView
Parse books to get title, author, and cover for library list

Right now, we do one per second until we've done them all.  This doesn't
seem to cause too much lag in the GUI.
Avoid seg faults

delete doesn't null out a pointer.  Since we were checking for that, we
need to do it manually.  (Question: Is delete needed in this case?)
Also, if we check and notice there's a problem, don't keep going!
Error message when we cannot open a book
Scroll back to top when returning to Recently Read
Improve sorting by author of corner cases

Null, none, and errors are now prefixed by "zzz" (lowercase is
important!) to sort at the end.
Update the list as we read the covers of the books

For some reason, the cover image doesn't update.