Add spec for one_to_one :validate option usage in setter
Support :raise_on_save_failure option for one_to_many associations

Previously, the add/remove association methods for one_to_many
associations explicitly raised exceptions even if the save method
returned false (because the associated object used
raise_on_save_failure = false).  One reason for that is that the
add/remove methods unconditionally added the object to the cached
association and ran callbacks, since the internal _add/_remove
method return values were not inspected.

Change the add/remove methods to return if the _add/_remove methods
return nil/false and :raise_on_save_failure is false.
Support :raise_on_save_failure option for pg_array_to_many and many_to_pg_array associations
Remove mention of after_initialize from instance_hooks

It's no longer a default hook, so there is no reason to reference it.
Don't clear validation instance_hooks until after a successful save

The problem with the previous simpler code is that it cleared them
after validation, even if the object was invalid, meaning that if
you attempted to save it again, it would skip the validation instance
hooks.