Allow configuring if a fake record attribute can be null or not

This updates fake record attributes to support specifying whether
they can be null or not. This doesn't effect any fake record
logic, but is setup for factories not setting fake record attributes
that aren't required and not walking associations whose foreign key
isn't required. This mimics ActiveRecord's interface and behavior
so the factories will work for both fake records and real records.

@te