Encapsulate Flask & SQLAlchemy in HALApplication

Up until now, code using the hyperdns-flask library has directly
created, configured, and accessed the Flask instance and SQLAlchemy
database object.

To provide a better degree of abstraction, the new HALApplication class
does this work instead. Convenience methods like flask_context() and
commit_changes() are provided that make for a small, clean API that
covers only what we need, and it's no longer necessary for user code to
access the database object. Almost all access to the flask object have
also been wrapped in these convenience methods, though a few remain in
hapi-flask and hapi-worker.