Initial implementation of localizer

Adds the messageformat.js library.
+ tests + addition to run.js
Update messageformat.js to include fallback for pluralFunc

Uses commit e9eb026 from my fork of the messageformat.js tree:
https://github.com/Stuk/messageformat.js/commit/e9eb026ad9acd09865817a84d55663a990b4be83
Add Localizer class to localizer

Add defaultLocalizer to localizer
Add tests for Localizer and defaultLocalizer
Add messages and getMessageFromKey to Localizer
Add localize method to Localizer
Use Localizer#localize in localization bindings
Update messageformat.js to include escaping of double-quotes

Uses commit 1086694.
https://github.com/SlexAxton/messageformat.js/commit/10866942b58059184c146b43b8611800ebb4254a
Change Localizer#localize to always return a function

Better to be consistent. To make it more convenient if the message
is a simple string the function has a toString that also returns
the string. See the JSDoc for more details.

Loading of messages inside Montage for localization
Default locale of localizer to defaultLocalizer.locale on init
Update documentation
Update localizer tests

Update localizer to load package.json with a custom require

Before the localizer would always try to load the messages from
the Montage package. Now it accepts a require function to load
from where the require comes from. By default it uses
{global|window}.require, and so will load from the package that
Montage is used in.

Add failing test for creating non-en Localizer
Add all MessageFormat locales to the repo and script to import

Run ./lab/tools/import-messageformat-locales.sh to clone the
latest MessageFormat master and concatenate all the locales
into a CommonJS module that can be required by the Localizer
Fallback through language tags in Localizer

Refactor Localizer loadMessages and add comments
Change locale directory from "locales" to "locale"
Correctly bind localizations for multiple properties on one object
Add better error message for localizations serialization when the key doesn't exist
Make localizer used require packageDescription
Add messagesPromise and timeout to localizer
Make Localizer.localize always return a string even if the message doesn't exist. Friendlier for the user
if downloading the localizations fails
Make Localizer.localizeAsync use the messagesPromise
Add more tests for the localizer
Add script to generate a manifest for the given directories
Add localize function directly on Localizer exports

gh-911
Add delegate to Localizer.defaultLocalizer
Also update JSDoc
gh-903

Seperate out manifest loading in localizer
Add availableLocales property to Localizer
Remove hasMessages from Localizer
Update logger calls in localizer
Add localizer and waitForLocalizerMessages to component

gh-910
Remove incorrect localizer require from component comment

require calls are parsed even if they're in comments.
More informative failure messages in localization spec
Correct rejection to be an error
Update failure handler to match latest Q
Start adding to Message to localizer
Add test for localizer Message object and repetition
Update and refactor MessageLocalizer into Message

and MessageVariables in MessageData
Allow bindable key and default in l10n serialization
Add serializer tests
Change Localizer Message to have key and defaultMessage
Makes Message localize async, and so tests updated
Stop adding dispatchChangeEvent to objects

Unused and polluting objects
Make _bindingDescriptors property non-enumerable
Add serialization support in the localizer