3.0 - Separate associations object

As per #2428 separate the associations object out. This object provides most of the features I think we'll need as we  rebuild FormHelper and bake. It provides a fairly spartan interface right now, but we can expand it as needed in the future.

I'm starting to question whether or not it is a good idea to keep `strtolower()`ing the association aliases, as I don't think most developers will expect the names to be case insensitive.