Improve edge case handling

This PR covers the following:
-  Clean up `Sprig::Reap::Association` by using some of the built-in methods on  `ActiveRecord::Reflection::AssociationReflection`
- Handle `belongs_to` associations that can be `nil` (would previously throw an error)
- Deal with model attributes that are wrapped by Ruby objects by using `read_attribute` instead of `send` (should fix #5)
I currently have `LocalFile#unique_location` handling the conflicts.  This `FileAttribute` object doesn't currently have any knowledge about the `model` or `id`.  It's just concerned about figuring out if the given attribute value is a file type or not.  Do you think this is sufficient?