Attempt to cache inverse of has_many

Previous behavior was to set the inverse of `has_many` objects as attributes.
This can be problematic in the case of attempting to serialize attributes
(think, infinite recursion).  It is also different than how most other
relationship are expected to behave (i.e. saving them in the
`Association@cached_data`.  This commit exposes `Association#cached_data` and
has the `HasManyAssociation#fetch` attempt to save the inverse relationship in
the `cached_data` if such a relationship/association is defined (most often
through the `AssociationProxy`.