Use an association's class name provided as-is, and derive a class name from the association name using the same rules as ActiveRecord

I've ported the algorithm from ActiveRecord to calculate the class name for an association. Unlike the existing code:

 - A provided `:class_name` will be used as-is, without singularizing, and it must match a class (e.g. "External::Person", not "external/person").
- When deriving a class name, when one isn't provided, singularize the association name only if it is a collection.  

This is very similar to #80.