3d color & lighting, more solids, Angle utilities

Let me know if you'd rather I break this up into multiple PRs.  

* The first patch replaces the use of `FillColor` with some proper 3D Attributes that allow more realistic images
* The last two patches add boxes (rectangular prisms) and Frusta (including cylinders and cones)
* In the middle are several utility functions I wanted while writing the new solid shapes.  Following the Angle type, the 3D direction type doesn't need to be a type class.

The matching branch in `diagrams-povray` can render these Prims and Attributes, is in the images below:

[trace test for box (png)](http://bergey.s3.amazonaws.com/diagrams/box-trace-test.png)
[trace test for cone (png)](http://bergey.s3.amazonaws.com/diagrams/cone-trace-test.png)
[source for trace tests](http://bergey.s3.amazonaws.com/diagrams/../examples/3d-trace-tests.hs)
[shading demo (png)](https://s3.amazonaws.com/bergey/diagrams/3dcolor.png)
[source for shading demo](https://s3.amazonaws.com/bergey/diagrams/3dcolor.hs)