When defining a language, setting a mode is now required. In addition, defineLanguage now returns a promise that resolves once the mode has been loaded and set, instead of returning the language directly. To make things more consistent both within LanguageManager and with the rest of the code base, chaining support has been removed.
Fix: language IDs were documented as foo_bar, but validated as foo.bar
Normalize file extensions by also removing leading dots if necessary
Use CollectionUtils instead of $.each
Language now encapsulates its properties and makes them accessible exclusively through getters and setters
Adjust the unit tests accordingly
Added documentation to Language's properties
Refined the comment about our special HTML MIME mode
Renamed fileExtensionsToLanguageMap to fileExtensionToLanguageMap
Documentation cleanup
Call result.reject in a few places instead of throwing exceptions
Merge remote-tracking branch 'origin/master' into dk/language-api

Conflicts:
	test/spec/Editor-test.js
code review comments pull #2980
Merge branch 'master' into jasonsanjose-dk/language-api
fixed mode handling for text/plain and validation of mode
fix language unit tests
code review comments part 1
code review comments part 2. Track _pendingLanguages while loading. Use special null string for plain text mode. Update unit tests.
update language id validation
update defineLanguage jsdoc
wait for LanguageManager to load before finish init
Merge pull request #2980 from adobe/jasonsanjose-dk/language-api

Continued Language API work