Allow custom setter methods to run for aliased attributes (fixes #350)

The logic in the Model::__set() magic method allowed for either an aliased
attribute *or* a custom setter, but not both.  If a custom setter method
was defined for an aliased attribute, then the attribute value would be
set without going through the custom setter method.

Changed the logic so that the _set() method first normalizes an
aliased attribute into the real attribute name, then checks to see if
an there is a custom setter method defined and runs it if it exists.