Attempts to make original mutators croak but provide similar functions

The idea is to minimize possible confusion by having the original
mutators throw exceptions, but expose the functionality via alternate
methods. So $dt->set_hour() will croak, but $dt->with_hour() will return
a new, modified object.
Mutators now croak and are replaced with alternate methods
Implements alternate methods for all the mutators
Reimplements 'with_' methods using Sub::Install, adds documentation