Rename 'generate' to 'generator'
Add preconditions in tests
Remove 'Generator.bind'
API rearrangement
Make generators into sub-probability distributions

- Enables an 'element_of' domain for picking elements out of a given
  list.
Work on documentation