Fix issue with private kernel methods and collection associations. Closes #2508

Change CollectionProxy#method_missing to use scoped.public_send, to
avoid a problem described in issue #2508 when trying to use class
methods with names like "open", that clash with private kernel methods.
Also changed the dynamic matcher instantiator to send straight to
scoped, to avoid another roundtrip to method_missing.

Conflicts:
	activerecord/test/cases/associations/has_many_associations_test.rb