incomplete and some are just placeholders but I wanted to try to get
something at least into 2.2 on the grounds that what I have is a lot
better than nothing. I also wanted to commit something which documents
the interfaces in 2.2 before I start updating the documentation for 3.0.
This is a definite 2.2 candidate and is also relavent to 2.1 if people
still care about that branch.