Changes from Joel Burton:

- use underscore.js and solve some issues with functional paradigms

- change string maniuplation -> direct bit manipulation for
  correctness-finding

- add "cheat" function

- add "hint" function

- cleanup of some JS style issues.