Fix interactions between :before_add callbacks and nested attributes assignment

Issue #1: :before_add callback is called when nested attributes assignment assigns to existing record if the association is not yet loaded
Issue #2: Nested Attributes assignment does not affect the record in the association target when callback triggers loading of the association
Restore the use of `#add_to_target` for nested attribute updates on existing records

This requires adding a `skip_callbacks` argument to `#add_to_target`
so that we don't call the callbacks multiple times in this case,
which is functionally an application of existing association data,
rather than an addition of a new record to the association.
Refactor NestedAttributesWithCallbacksTest for clarity

1) Use `assert` and `refute` where possible.
2) Separately include the setup, subject, and assertions in each test - don't hide the tested call in an assertion method.
3) Name things based on their role rather than incidental facts about them - e.g. `@bird[1]` -> `bird_to_destroy`. `bird2_deletion_attributes` -> `destroy_bird_attributes`.
4) Use more succinct naming where possible - e.g. `birds_with_callback` -> `birds_with_add`, `@pirate_with_two_birds` -> `@pirate`