Remove Boilerplate Code, Compact Lexer

- Refactored the Lexer (Lexical token rules) to
  use less object literal notation for better
  compression.

- 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.
Merge branch 'master' of https://github.com/Preole/bbm