Eager loading associations

Some of the eager loading behavior follows the activerecord implementation, but they go even further representing the eager into a proxy object since includes and eager_loading share similar behaviors.