Make providing a class name with associations optional

This modifies the model associations base to make the associated
class name optional. This will allow adding polymorphic associations,
that do not have a static class name, but still allow them to build
on the current association logic. The one-to-one and one-to-many
associations still require passing an associated class name as they
did before.