Improved documentation for program types.
Fixed empty operand semantics; added separator and operand operations.

All element classes double as "a program containing the single element item (or empty)".  Documented this better, and changed Operand semantics to fit into this model: an empty Operand is now an empty Program that does not contain an Operand, in the same way as an empty Operator and Separator are programs that do not actually contain an Operator and Separator.  Added assertions against the empty state in cases where these are used as elements, not programs.  In the future, Program and Element may be separated further.
Fixed a documentation group name typo.