refactor out syntaxTree into ast-node-factory.js

Moved syntaxTree out of `espree.js` and into its own library. This was a relatively simple move, with the only notable changes being: 
- Renamed `SnytaxTree` to `astNodeFactory`, which seemed more fitting since the library is only used for creating new ASTNodes
- Kept `processComment()` in `espree.js` since it relies so heavily on the espree.js-scoped variables/state 
- Added a crap-ton of documentation, which was both a total pain and incredibly educational