Shapes now accept SymPy expressions in geometry.

- Cleans up the viz/shapes.py to have less repeated code.
- Specific shapes have required arguments for their geometry (backwards
  incompatible).
- Shapes can have SymPy expressions set for the geometry and numerical values
  are now substituted in the Scene class.
- Addresses issue #41