Move geometric classes and functions into a module

All geometric classes and functions which are not dependant on SVG
specifications have now their own module.
This will allow easier reuse and better understanding of the package.
Add <rect> support

A rectangle is defined by 2 points.
bbox() is computed
segments and simplify return 4 segments
geometry: simplify_segment simplified

We now use max() on the list of pdistance values. That's more pythonic.
Path segments: use itertools.groupby() to group segments

Segments need to be grouped around MoveTo. A MoveTo means the start of a
new segment.
We now use itertools.groupby() to acheive the grouping.

Each segments is generated as a series of small segments. We use
itertools.chain() to merge all those inner segments into a single one.