Fix MAGN-865; Code clean up 

This submission tries to fix AST nodes to code problem from the root cause. 

1. Implement ToString() method for AST nodes, instead of a long list of if-elseif-elseif... statement. It also provide a lot of flexibility: no need to use GraphUtilities to compile AST node to string for most cases.
2. Re-factor Compare() method defined in Node base class to Equals(). 
3. Fix typo.
4. Fix some errors and inefficiencies in the existing implementation.

Although 18 files are touched, the change is save. A complex test case (RoundTripeTests.TestAst) is added to convert a list of string to AST nodes back and forth and do comparison to ensure the change is safe.  Regression test run both on DesignScript and Dynamo. 

The related Dynamo pull request: https://github.com/ikeough/Dynamo/pull/841