Various changes.

- Make empty bounds raise an error instead of returning None.

- Add Pen.last_path() to complement Pen.last_segment()

- Fix a bug in undo()
Fix a bug in bounds merging. Various changes.

- Fix incorrect resulting bounds when merging papers that have
  overridden bounds.

- Redefine Bounds.union() to be not in-place, to be consistent with
  set.union().

- Add drawing of text elements.