OCSADV-196: ImPolygon

Added ImPolygon class to create polygonal Shape objects independent of diva.
I'm going to check if it makes a difference if I just check nonEmpty and then the other conditions, and add a test case for three collinear points to see how that compares to two points.

I'm not sure off the top of my head what the complexity of List.take(c) is in Scala, but if it is O(c) as one would suspect,  suppose we could also technically do `points.take(2).length == 2` and expect constant time.