Use better ActiveRecord association methods for factories/stacks

This is a small refactor that switches to using "better"
ActiveRecord association methods. This changes from using the
`type` and `macro` methods for associations to using the booleans
`belongs_to?` and `collection?`. These require less
equality-checking and instead rely on the association object to
handle determining what it is or isn't. The fake record and it's
associations were updated as well to mimic this. I chose to go
with a similar boolean flag usage on the model associations to
be consistent and I think it's preferred to not hard check class
types and instead expect interfaces.