Implemented the Counting Iterator

Please do not merge. To be discussed with @weese.

The main reason behind CountingIterator is the following type of construct:
forEach(Range(0, 10), { std::cout << number << std::endl; });

* Refactored the PositionIterator to inherit (both via subclassing and template subclassing) from the CountingIterator.
* Used concept checking to solve pre-existent ambiguity issues with operators on integral types vs iterators.
* Iterator tests work.
* Dox is missing.
* Tests for the new CountingIterator are missing.