Better constructor for Segmentation

In the spirit of dea63de0a612a4fc162682adea2fe145e5939ab5, here's an (IMHO) cleaner and more Pythonic way to construct a `Segmentation` object: a proper constructor instead of a factory function on a different class and a bunch of setters (ugh). Introducing a factory function on `PointCloud` for each and every other class is introducing so much coupling that in the long run it's just not going to work.

I'm doing my best to preserve compatibility with these changes, but the factory functions are tying down our implementation choices. I'd love to split off `Segmentation` into a separate module and implement the constructor in Python to keep build times and object sizes down, i.e.

    # _segmentation.pyx
    cdef class _Segmentation:
        # low-level C++ stuff

    # segmentation.py
    from ._segmentation import _Segmentation

    class Segmentation(_Segmentation):
        # high-level, pure Python stuff like __init__

... but currently that would lead to circular dependencies because `PointCloud.make_segmenter` needs to know about `Segmentation`, and vice-versa `Segmentation` needs to know about `PointCloud`.