Polygon, PolyPoint refactor methods added.

Refactored polygon and polypoint significantly. Currently each polygon instance
is made up of a PolyPoint instance. A PolyPoint instance is an array of Point instances.

This granulairty helped make the responsibilites for each class much more defined.

PolyPoint instances currently have the following methods:
  min_x
  max_y
  min_y
  max_y
  x_values (Returns all x values as an array)
  y_values (Returns all y values array)
  get_bounding_rectangle (Returns a rectangle that will fit the current set of points)

Polygon instances can take advantages of the PolyPoint instance methods and now have
the following instance methods:
  bounding_rectangle (Returns the bounding rectangle of the PolyPoint instance)
  normalize (Returns a Polygon instance with points bound up agianst the top left of an inverted cartesian plane)
  normalize! (Still being implemented)

The get_bounding_rectangle method has been removed from the Bounder class. This was not a great home for it
and it fits much more nicley inside of the PolyPoint class.

Other slight modifications have been made to the factories.

All specs passing; some are still pending.