Split up `belongs_to` and `has_many` associations

This reorganizes the association classes into separate files.
This is to organize their code in a better manner and make it
easier to read each's logic separately.
Fix writing nil belongs to associations

This fixes a bug where belongs to associations would throw an
exception when they were given a `nil` value. This was because
the associations check to make sure they are writing `MR::Model`
values. This allows writing `nil` values which correctly sets the
underlying association to `nil`.

Closes #12