Fixed #4

Single row matrices now get parsed correctly instead of being parsed as
multi-row matrices, each with one element. Implemented using a flag
that keeps track of whether or not a vector is present inside matrix. If
not then the matrix must consist of one row.

Also modified the invalid matrix dimension error message to include
the expected dimensions of the matrix.
Short string representation of matrices is used with UnaryOperators

When calling the .toString() method on a NodeExpression, if the operator
is a UnaryOperator, the short string representation of the first argument
is used in the case that it is a matrix.