Add support for cluster rules.

Also add some whitespace to the dense argument processing code.
Document the cluster rules.
Merge branch 'cluster'