Refactor token generation.

Break out the generation of a single new output token into a function
that can reduced (kinda).

Generate a fixed number of output tokens by reducing the above function
over (range amount).
Add sentence generation.

Add a generate-sentence function to the generation namespace that starts
at a state that ends a sentence, and goes until the next end of
a sentence. Closes #3.

The definition of the end of a sentence is not perfect -- it just means
a ".", "?", or "!" token.