Added support for discourse histories.

One very notable change about the way things are done is that sentence string
generation is now done lazily. That is, strings are not generated at the same
time as the sentence any more, but are generated each time instead.

This behaviour may be altered to allow for one-time lazy generation, but at the
moment the string is generated every time that representation is requested.