3.0 iteration methods

This PR add a couple major things:

* `Utility\Collection`: an iterarator class with a handful of methods for manipulating and extract information from elements stored there
* `ORM\ResultSet`: inherits via a trait all methods in `Collection` so that elements returned from the database are more easily manipulated

I left a few methods out of `Collection` that I'd like to implement at a later point:

* `take`: Return a collection with up to N elements from the original collection
* `append`: Append another iterator to the collection
* `match` and `matchFirst`: Returns a collection or a single element matching some array conditions
* And possibly some/all of the methods that are in `Hash`