TODO before 1.0:
----------------

- Fix places that raise ValueError when they should be raising TypeError
- Complete documentation


TODO either before or after 1.0:
--------------------------------

- Unit testing suite (preferably before)

- Eliminate explicit type() checking.  Even isinstance() should be avoided
  where possible, relying instead of duck typing.
