Document All The Things (At Once)

This should be enough to get us by for now.

I'm going to make it a hard requirement from now on that pull requests contributing significant new functionality come with documentation.
We should probably use "type" here rather than "set", since Swift types are not really sets in any mathematically sensible way, and people not familiar with abstract algebra and/or category theory will be confused by the fact that there is also a `Set` collection type.