Added an abstraction for retrieving the current version of the database along
with a default implementation. The previous implementation had the current
version passed to the update function as a parameter. The new implementation
makes use of an object, optionally injected, to determine the database version.
This means that database that conform with the default implementation need not
perform any additional configuration. The default implmentation is to choose the
max value from a column named `version` in a table named `alters`.