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)
aha, how'd I miss this. 

I might prefer a thing that increments the filename as filenames are unavailable to ensure uniqueness (instead of sticking a random number at the end).