Rewritten 'term_to_string' function

New version is more systematic and easier to understand than the
previous version. At each stage is calculates an optional outer
and inner operator. Only if there is an inner and outer operator
parentheses have to be introduced in order to take precedence and
associativity into account.

	modified:   ocaml/assertion_table.ml
	modified:   ocaml/class_table.ml
	modified:   ocaml/feature_table.ml
	modified:   ocaml/feature_table.mli