Restructured expression tree as binary tree.

prop, sub, and call are now top-level expressions.
Started work on the parser, which prompted the expression tree
restructuring.
isAssignable logic is dramatically different, and now includes terminal
checking rather than having it be a separate constraint.
Tests have been refactored and are now much simpler, and no longer require
modififying expression trees that have already been materialized.