Bug 883636 - Create CLI tools. r=gandalf

Create CLI tools for parsing, compiling and perf measurements.

`parse.js` is a utility script that uses L20n's Parser to parse a string into
an AST and output the result.

`compile.js` is a utility script that uses L20n's Compiler to parse and compile
a string into Entity objects and output the result.

`perf` is a utility script to measure the performance of parsing, compilation
and getting entities.
Bug 869372 - Don't silence unknown errors in promises. r=gandalf
Merge branch 'master' of github.com:l20n/l20n.js
Bug 881292 - addResource and linkResource should be consistent. r=gandalf

The patch makes both addResource and linkResource lazy (called only in
Context::freeze).

If Context::registerLocales has been called, it will add resources to all
regular locales in _locales.  Otherwise, it will create a __none__ locale in
_locales and will add inline resources and URIs.  It will throw if
linkResource(Function) has been called, because there's nothing we can replace
{{lang}} with.

                            __none__   _locales
    addResource                y          y
    linkResource(string)       y          y
    linkResource(function)                y

__none__ is created lazily, inside of Context::freeze, if registerLocales
wasn't called, or it was called with null as the only argument.

This way, __none__ behaves similar to a regular locale in that it's part of
the _locales dict and part of the _available array.

    var ctx = L20n.getContext();
    ctx.addResource('<brandName "Firefox">');
    ctx.freeze();
    //_available is ['__none__']
    ctx.registerLocales('es', 'en-US');
    // available is ['es', 'en-US']
    ctx.registerLocales();
    // _available is ['__none__'] again
Bug 869210 - Silence dryice's errors. r=gandalf

This patch also removes the dpes arrays from defines in built l20n.js
(No bug) Move intl.js out of l20n/platform. r=gandalf