OCSADV-196: ImPolygon

Added ImPolygon class to create polygonal Shape objects independent of diva.
This is a trivial point but I'm curious why `points.length > 2` here and `points.nonEmpty` in the other contains methods.  The length test is presumably a quick thing to short-circuit trivial cases but of course with `List` length is O(*n*).