Expanded BufferIterator usage in the Iterator template
* Iterator doesn't need an internal index variable anymore, uses BufferIterator operators
* Added comparison operators to BufferIterator
* Iterator template instances can now be used in range-based for loops