Create new Id type for AlbumID, RecordingID and ArtistID

Defined new type "data Id a = Id Integer" with, for example,
"type AlbumID = Id Album". This allows, among other things, all
three Ids to share Convert instances.
Add DBIO Monad

Database.withDatabase now returns a DBIO Monad:
type DBIO a = ReaderT Database.HDBC.Sqlite3.Connection IO a
This removes the need for a lot of explicit passing the database
connection around.
Add wrapDB which "wraps" withDatabase around a function

Many internal functions which use the DBIO monad have wrapper
functions that take a DatabaseRef as an argument and are in the
IO monad. The wrapDB somewhat automates the declaration of these
wrapper functions.