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