Make `MR::FakeRecord`'s index operator more like ARs

This updates `MR::FakeRecord`'s index operator behave more like
ActiveRecords. It now writes instance variables even if an
attribute hasn't been defined and, like ActiveRecord, will
return these custom attributes in the `attributes` hash. This
allows mimicing using an ActiveRecord model with custom selects.