Add Table::findOrNew()

This method lets you easily find an existing entity or generate a new
entity with the chosen properties. In addition to finding entities, it
lets you patch/set additional attributes on the found/created entity.

Refs #4631
Fix up doc block.
Helpers are lazy loaded.
Fix test
Update code to create and save entity.

The additional defaults are no longer applied to existing entities. All
entities returned from findOrCreate() will always be persisted.
Started to implement a BufferedIterator
Use constructor instead.
Correct doc blocks.
Implementing Collection::compile() using BufferedIterator
Add missing use statement.
Remove unnecessary use statement.
Added tests and fixed a bug in BufferedIterator
Fixed doc blocks
Remove implemented events part
Removing some changes that are not needed yet
Dont use beforeRender in paginator helper.
Skip tests
Use own method instead.
Revert
Use a callback in findOrCreate instead of an array.

Using a callback to set additional defaults gives more flexibility
and control to application developers around how to configure new
entities.