Fix link to project page and some README fixes.
Remove whitespace and end of lines.
Fix formatting.
Improved ProblemReporter

Because all problems are related to an object we are currently assembling into
an area, the problem reporter will get the type and ID of the object once and
can then re-use it. This reduces code duplication.
Also in this commit the ProblemReporterException uses functionality of the
ProblemReporterStream class and the ProblemReporterStream class was simplified,
all to allow more code reuse.
Move find_intersections() function from Assembler into SegmentList.
Simplify find_intersection() function.
Make Objects and Changesets totally ordered. Add tests.

Also fixes bug where Changesets where seen as open/closed when they were
closed/open.
UndirectedSegment is really totally ordered.

It derives from Segment which has operator==().
Rename stage2() function to create_rings() and make private.
Use emplace_back where possible and use it correctly.

emplace_back() takes a variable number of arguments to create an
object from not an object itself.
Rename functions for consistency.

first_segment()     -> get_segment_front()
last_segment()      -> get_segment_back()
add_segment_start() -> add_segment_front()
add_segment_end()   -> add_segment_back()

This is now internally more consistent and also consistent to the
front() and back() names used in STL collections.
More emplace corrections.