Component documentation

This isn't really ready for merging yet, but I thought it was at least worth letting others review it.

The improved documentation layout discussed in #70 needs to be adopted before we go any further.