Annotation Updates, part 1

Refactored MetaDataManager::metadata() to MetaDataManager::properties()
as this is more appropriate to function and allows for the distinction
between Table metadata and Casting metadata
Casting, part 1

Updated the Shadow to convert DateTime objects into hashs so that they
can be checked for updates.
Casting, part 2

Implemented type casting in the Populater so that values are converted
to their PHP equivalents as the Entities are made.
Casting, part 3

Updated the Find, FindWhere and FindOneWhere actions to use the new
Populater signature.
Tidy up of formatting in Factory
Casting, part 4

Updated the AbstractAction (and by extension the ActionFactory and
Factory) to expose the Caster instance.
Casting, part 5

Updated the Saver action to cast values being inserted or updated into
the database into their database equivalents.
Updated docs