Added code documentation and license

Added code documentation and license
Added code documentation and license

Added code documentation and license
Using same Expression object in different threads

Old Expression object is mutable because of variables and MathContext
object. So, that class is further split into two Expression (which holds
RPN) and ExpressionInstance (Runtime instance of the Expression to be
evaluated with variables).