Add a `Factory` module, handles generating model and record objects

This adds a `Factory` module that helps build model and record
objects. This is a testing tool that can be used to generate
models or records easily. For non-fake records, the factory will
pre-fill all the columns of a record with random data. This should
allow creating instances of these records easily with arbitrary
data.