Format model.py code style
Add Node and Segment2D in model.py
Make Polygon2D be available for multi-chain polygons and also make Polygon2D be iterable

 - modify __init__ raycrossing distance_func accordingly
 - move distance_to_segment to Segment2D.distance_to
 - demo in modify.py seems good
Convert model.py to a package

 - make package model
 - split model.py into nose.py segment.py polygon.py
 - make Node, Segment2D and Polygon2D be package class in model/__init__.py
 - rename Polygon2DIterator to _Polygon2DIterator
 - demo of polygon.py seems good
Change the sample_vertes_xys() and relative demo in polygon.py

 - the new sample add a hole in demo
Improve _Polygon2DIterator by adapting the iterable character of chains_heads