Remove custom error function

The error was a little vague, so I replaced it with specific errors and used
`console.error` for output (which will produce nice red colors if supported).
Simplify the script and add MOAR comments

This is a major rewrite, but I'm hoping you agree with the changes. TL;DR:

* Add more comments along with JAVADOC-annotations
* Use longer variable names to avoid confusion
* Simplify the script to remove superfluous functions - there is no need to
  split the string into a character list (this isn't Java lol), so the script
  is shorter and we've removed some of the complexity around dealing with a
  list (splitting and joining, for example).
* Remove `app.init` - this is just my personal preference, as I feel that the
  init function wasn't doing anything that couldn't be done in the bottom of
  the script where the environment-specific code was. You could move that shit
  into an `init` function, but in my opinion it isn't a part of the module, but
  rather a set of code on how the module is supposed to behave so it shouldn't
  be a part of the main object.
* Renamed `app` to `leet` - another personal preference, but it just "feels"
  better this way.
Minor changes to conform to JSLint

See [JSLint](http://www.jslint.com/) for more info.
Add handling of empty strings