Replace custom Unicode data with npm module

The existing unicode module was large and unwieldy, as well as somewhat
inefficient. Now the project dev-dependencies includes Unicode 7 data,
which provides regular expressions for matching character classes. This
is used at build-time to generate a unicode module. This unicode module
no longer exports name information, and the lexer just reports the
actual character in case of an unrecognised character. The 'escape'
function has been moved to the util module.

The asap dependency bounds have been extended and brfs has been moved to
a dev-dependency.
Avoid name clash with existing module definition

Defining a method with the name 'module' clashes with the local
identifier for the surrounding module. This can be avoided by assigning
the function directly to the property on exports.
Use ESLint with custom rules instead of JSLint

ESLint is capable of checking more rules, and enforcing more stylistic
consistency. An ESLint configuration file is now included, which turns
on most optional rules, and the rest of the project has been modified to
conform to these rules. The major change is that array literals now
require padding. The consistent-this and and spaced-line-comment rules
require a minor patch to accept the existing style.
Reimplement while loops to reduce memory leaks

The existing implementation of the while() do() method formed a long
chain of every task created in the loop, retaining every task until the
loop finished. This was unnecessary, as each iteration does not need to
wait for the next to conclude the task. Now the loop creates a manual
task, which is resolved (or rejected) by the completing iteration. Each
individual iteration spawns the next, but it does not wait for it to
complete, and its tasks are not retained and they may be collected. The
outer task binds into the standard waiting mechanism for the current
iteration, and if stopped will stop its body as well.