Rename some DBIO functions.

Functions in the DBIO monad which used to end in "'" no longer do.
Instead, the wrapDB versions do.
Refactor Tags type to use lenses.

Replaced the "record syntax" version of the Tags type with a new
version using Control.Lens from the "lens" library.
More lens-based refactoring.

Tag reading is quite a bit cleaner now.
Export Gramophone.Database.withDatabase

Without this function, it is impossible to use many of the other
exported functions.
Change underlying type of AudioFileName and export its constructor

Change AudioFilename (a newtype) from Text to FilePath.
Export lenses for Tag record.

Also removed export of constructor and record members.
Add overMaybe :: Monad m => (a -> m b) -> Maybe a -> m (Maybe b)

This is just Data.Traversable.mapM with the Traversable instance
bound to Maybe. It is necessary because all the Convert instances
(from HDBC) would require a lot of extra type annotations if mapM
was used.
Improve handling of SQL NULL values

Data structures now use Maybe everywhere they correspond to
database columns that may be null. Mostly added Maybes to data
structures but some columns were changed to NOT NULL in the
database schema instead.
Replace Title type with separate RecordingTitle and AlbumTitle
Export a couple of missing data constructors.
Change String fields to Data.Text in Tags type.

This is the easiest place to convert the Strings returned by
GStreamer to the Texts used throughout Gramophone.
Fix an SQL typo fetching recording records.
Add functions for adding files to the database

Can add files one-at-a-time or recursively add all files in a
directory. Basically works but need polish and cleanup.