Add operators to dataiterator and fields to use range-based loops

This does break one of the tests in performance/iterator
Make DataIterator a bidirectional iterator

Adds a decrement operator (and private method previous())
Add changes to test_suite to test_suite_make
Tidy up iterator performance test