Add QuarterCircleRadians
Add Square, stub Rhombus

Also includes some refactor to Rectangle.

Add OrthogonalBoundingBox

Replace OrthogonalRectangle sizeX,sizeY:Double fields with one
size:CartesianVector field. I'm on the fence about whether that
constitutes an abuse of the type. It might be slightly misleading, even
though it's perhaps appropriate to refer to a width/height as a
cartesian vector, it's less appropriate to consider it as a Point. But
the result reads better; `size.x` looks nicer than `sizeX`.
A lot of movement

Merged several of the dimension2 geometry classes into files named p1,
p2, p3, p4, named for the number of points in the data structures
(single point, lines, triangles, and quadrilaterals).

`area` no longer belongs to `Interior` traits, and is now instead a
member of `Polygon`. `withArea` is moved from `Rectangle.Interior` to
`Rectangle`. The `+`,`-`,`*`,`/` methods pertaining to area adjustments
are gone, because there is no longer a place where they make sense to
be, and I'm not sure they even made sense under `Interior` in the first
place.

Added a ton of traits regarding polygons, mostly for the quadrilaterals.
This includes `Cycle`, `Polygon`, and many `Perimeter`, `Interior`, and
`Exterior` traits. The value of the latter three traits is still very
questionable so far, given the high LoC dedicated to them and the small
amount of functionality they contain, but I think their worth will
become evident when I start adding intersection methods.

Merged the approximation-testing project into the approximation project.

Renamed approximation assertion methods from `=~` to `==~` to be
distinct from the approximation testing methods and to be more in line
with scalatest's `===`.