Add an i18n.get() wrapper

This adds a `get()` function to the `window.i18n` object, which takes up to three parameters: `locale_name`, `key`, and `parameters`. With just one parameter, it returns a getter function for the indicated `locale_name` object which requires the further two parameters; with two, it returns a function matching the `key` in the indicated locale that should be called with the remaining parameters; with all three, it returns the desired string with the `parameters` applied.

The main reason for adding such a function is the breaking change this branch also enables; namely, objects in the raw translation object can now be stored as strings if they include no variables. As this means that the object's contents are then a mixture of strings and functions, a wrapper is required to enable easy access. The rationale for the change is, again, filesize, as this saves 20 bytes for each simple string translation.

The output of `MessageFormat.prototype.compile()` is unaffected by this change, such that use cases where the JavaScript isn't precompiled---such as the included test suite---do not require any changes.

As a secondary benefit, this prompts a user of the library to use `i18n.get()` to initialize their own string lookup function, and to use that in their code rather than `i18n` directly. An example might help; using the example `colors.json` and `sub/folder/plural.json` files:

```json
{
  "red": "red",
  "blue": "blue",
  "green": "green"
}

{
  "test": "Your {NUM, plural, one{message} other{messages}} go here."
}
```

This currently prompts usage like:
```js
$('<div>').text(window.i18n['colors'].red()).appendTo('#content');
$('<div>').text(window.i18n['colors'].blue()).appendTo('#content');
$('<div>').text(window.i18n['colors'].green()).appendTo('#content');
$('<div>').text(window.i18n['sub/folder/plural'].test({NUM: 1})).appendTo('#content');
$('<div>').text(window.i18n['sub/folder/plural'].test({NUM: 2})).appendTo('#content');
```

Whereas with the change the following pattern would be encouraged:
```js
var colors = window.i18n.get('colors');
$('<div>').text(colors('red')).appendTo('#content');
$('<div>').text(colors('blue')).appendTo('#content');
$('<div>').text(colors('green')).appendTo('#content');

var plural_test = window.i18n.get('sub/folder/plural', 'test');
$('<div>').text(plural_test({NUM: 1})).appendTo('#content');
$('<div>').text(plural_test({NUM: 2})).appendTo('#content');
```

As a further reason for adding `get()`, I also have [a working implementation](https://github.com/eemeli/messageformat.js/commit/171ca5c3ba9afc7321c2f57300dec1b37f39230d) of a `fill()` function that uses it while reading an HTML document tree for nodes with a configurable `data-` attribute, replacing their contents as appropriate. For example with the following source:
```html
<div data-txt>red</div>
<div data-txt="blue" data-txt-attr="title">a color</div>
<div data-plural data-plural-var="NUM:2">test</div>
```

And with language set to `fr`, calling
```js
window.i18n.fill('colors', 'data-txt');
window.i18n.fill('sub/folder/plural', 'data-plural');
```

Would result in:
```html
<div>rouge</div>
<div title="bleu">a color</div>
<div>Vos messages se trouvent ici.</div>
```

As that's a different change than just adding `get()`, I've left it out of this pull request.