New non-stacking ToastDisplayer implementation

A rehash of PR #27.

This adds an interface for ToastDisplayer.

It deprecates Toaster, but enhances it by upgrading it to use the new interface (without breaking API).

It adds two implementations of ToastDisplayer:
- a regular one, like Toaster, but with the ability to cancel all preceding toasts
- a non-stacking one, which will only show the last toast

well not really, none of the implementations differentiate between a currently showing toast, and one which is waiting to be shown and AFAIK it's not possible to make this distinction unless you write a ToastDisplayer with its own timer to keep track.

The **or** is inclusive not XOR. Not sure how to make it clearer in this doc.