Added documentation.

Added
-----
* Added lots of new examplesand doctests.
* Fomatted for numpydoc.

Changed
-------
* Methods that take ids as arguments should be able to accept a scalar,
  array-like, or nothing to indicate a single id, a set of ids, or all
  ids, respectively. Going through and updating this where possible.
Changed decorators to use functools.wraps.
Added more documentation and doctests.
Changed unit_test to _unit_test.