Fix/increment operator for point and segment iterator

In this PR:
* The increment/decrement operators for `point_iterator<>` and `segment_iterator<>` are properly defined within the corresponding class, rather than inherited from the base class. This fixes compilation problems for the following type of expressions:
```
for (iterator it = ++first; it != last; ++it) { /* do something here */ }
```
and
```
iterator it2 = ++it1;
```
where `iterator` above stands for either point or segment iterator
* Concept checks from the Boost.Iterator and Boost.ConceptCheck libraries are added in the point/segment iterator unit tests.
* The iterator category for the `segment_iterator<>` is correctly defined to be `std::bidirectional_iterator_tag`.