Returning Collections on Associations getters

Previously this commit, all associations would return an instance of Array.
This would not allow the usage of methods that are defined on the collections.
Returning a collection on the association getter make possible to use filters
that are already defined on the collection.
Using a new class to work with associations

Following the [Open Closed
Principle](http://en.wikipedia.org/wiki/Open/closed_principle) will
assure nothing will break since the original `Collection` class will
remain the same.
Merge pull request #84 from zertico/collections

Returning Collections on Associations getters