title: Fix invalid polygon in Shapely
body: <p>Shapely defines a Polygon as invalid if any of its segments intersect, including segments that are colinear. Many software packages will create a region or area with a "cutout" as shown here which has colinear segments:</p>
  
  <p><a href="https://i.stack.imgur.com/0t9hR.png" rel="noreferrer"><img src="https://i.stack.imgur.com/0t9hR.png" alt="enter image description here"></a></p>
  
  <pre><code>&gt;&gt;&gt; pp = Polygon([(0,0), (0,3), (3,3), (3,0), (2,0), 
                    (2,2), (1,2), (1,1), (2,1), (2,0), (0,0)])
  &gt;&gt;&gt; pp.is_valid
  WARNING:shapely.geos:Self-intersection at or near point 2 0
  False
  </code></pre>
  
  <p>Naturally, the cutout can be implemented natively in Shapely, or this same geometry can be implemented as two valid polygons, but if I only have the list of points shown above, is there an easy to "fix" this (create valid geometry from this list of points)?</p>