Changes from 0.3.0

This stuff had been released internally as 0.3.0, but never tagged, or pushed to github. Presumably the real commits are lost in time somewhere.

@jturnbull if, by some stroke of luck, you still have access to the original commits, could you please push (and tag) them? If not, can you please merge this? (If so, I'll add the tag afterwards.)