Expressions now have types

Expression.getType() returns the expressions' type. All
NumberExpressions are numbers; a VariableExpression's type is determined
at its creation (presently always number); and an OperatorExpression's
type depends on its operator and the types of its arguments. Each
Operator now has a getType(Type...) method which determines an output
type from one or more input types.
Merge remote-tracking branch 'origin/master' into types.
The old string-based type system has been replaced by the Type enumeration.
The format for a typed variable is "(type name)" (e.g. "(number x)" or "(point P)").

Conflicts:
	src/Expression.java
	src/NumberExpression.java
	src/Operator.java
	src/OperatorExpression.java
	src/VariableExpression.java
Improve output for Pairing lists
Variables in theorems now have types
Remove line, ray, and circle operators

Now that line, ray, and circle are types, these operators have no
purpose. (In fact, when the expression parser tries to parse "circle c",
it now reads it as a VariableExpression of type CIRCLE, not as an
OperatorExpression.)

Also, I missed a theorem in the last commit; its variables have types
now too.
Fix order of intersect operator's arguments
Expression parser has an environment of variables

New variables are added to the environment when created; variables
already in the environment are reused. Every call to Expression.parse()
now provides an environment, which usually starts empty and is quickly
garbage-collected. The MainWindow has a persistent environment to be
shared between all statements. Use of this environment is not fully
implemented, and finishing it will require a lot of careful thought on
the ontology of statements, expressions, and variables.