3D colors, material reflectance

closes #121
simpler angleBetween
Add trig functions using Angle
lenses for polar coordinates

3D: spherical and cylindrical
2D: using the same type classes as cylindrical
make R3 strict data like R2
Make Direction a type, not a type class
Add Box
Add Frustum
Wall: remove extra imports
explicit instances for HasPhi, HasR, HasTheta to avoid overlap
make HasR _r lens be the vector magnitude

This definition works in all vector spaces, and is probably more often
useful.  The cylindrical r is easy to refer to as cylindrical._1; it
just happens that it was the case that motivated me to write these lenses.
clean up R3 instances
Wall: remove unneeded import
generalize angleBetween for arbitrary InnerSpace
move Angle definition to separate module

Angle's aren't specific to R2, and this way 3D modules don't need to
import from 2D.
move angleBetween to Diagrams.Angle

and move 3D angleBetweenDir next to the definition of Direction type
export more Angle functions from TwoD.hs
import Data.Proxy iff GHC < 7.7
Better Haddock comments for 3D attributes, _r Lens
Use _relative from Diagrams.Core