Started to implement a BufferedIterator
Implementing Collection::compile() using BufferedIterator
Added tests and fixed a bug in BufferedIterator
Fixed doc blocks
Removing some changes that are not needed yet
Reverting changes done to Collection::compile() as it breaks other code

The main reaosn compile exsted was to detach the iterator pointers from one
collection to the other. The solution using another iterator still keeps those
pointers, causing old bugs to re-appear
Added Collection::buffered() to make any non-rewidable rewindable
Using push() instead of add() since the latter is php 5.5+
Fix doc block typo.
Doc block updates for BufferedIterator.
Merge pull request #4686 from cakephp/3.0-buffered-iterator

3.0 buffered iterator