Drop validThis requirement

- Separate the Lexer into two files:

  - BBM._Lexer.js: Generates the raw array of tokens.
  - BBM.Lexer.js: The prototype

- Combine module.exports with `require()` calls.

- Strip unnecessary variables & function parameters

- Refactor the Lexer, the Parser, the HTML generator,
  and the abstract syntax tree node prototype such that
  there's no possible strict violations.

  Added __.map(array, callback, extras) as a result.

- Changed the callback parameter of BBM.fn.rebuildChild()
  to have the parameters (parent, currNode, index, sibs)

- Added __.isBlankString() check to attribute value keys.
  Empty attribute keys should not be part of the HTML
  output.

- More strict jshint options added:

  - "unused"
  - "undef"