Remove Boilerplate Code.

- Removed constructor boilerplate in favor of
  factory pattern and Object.create.

- Removed node.js environment check boilerplate
  in favor of directly attaching a value onto
  module.exports using IIFE.

- TODO: ASTNode should export a constructor function,
  so that ASTNode creation doesn't involve calling
  ASTNode.create() all the time.