Remove `fake` methods from model factories

This updates model factories to not support both the instance and
fake methods. Instead, they will only support the instance and
instance stack methods and will take a record class. The record
class can either be a real or fake record. This should help with
a number of other MR factory issues but is also less confusing
when working with model factories, record factories and read
model factories. This makes all of their interfaces consistent.

This also fixes issues with factories building associations
because of passed args. Previously, no matter what, they would
build a real record, even if when using the `fake` method. This
was because of MR internals always calling `instance` and not
providing the fake record class. Now that a record class
is always required to build a model factory, the fake associated
record is used and the `instance` method returns a model using
the fake record.

Closes #72
Closes #119