chore(async): Improve loading configuration, assert and ensure invalid ones.

- If the loader is not valid, it should not be used.
- If `invokeLoading` will be invoked, it is possible that no async loader is available (empty array).
- Assert the loader builder function returns a valid function.
feat(translateProvider): missingTranslationHandler

- Support for custom handling of missing translations via
  $translateProvider.missingTranslationHandler(handlerFn)
Add missing var statement
Merge pull request #25 from knalli/improve-loader

chore(async): Improve loading configuration, assert and ensure invalids
Merge branch 'canary' of github.com:PascalPrecht/ng-translate into canary
Merge pull request #27 from jamesandres/missing-translate-handler

feat(translateProvider): missingTranslationHandler
chore(loader): Auto-recognize nested objects supporting namespaces

If the result of any asynchronous loader (regardless function or XHRs) is a nested object, each key will be traversed the object flatten down.

Example:

```json
{
  "DOCUMENT" : {
    "HEADER" : {
      "TITLE" : "Header"
    },
    "SUBHEADER" : {
      "TITLE" : "2. Header"
    },
    "TEXT" : "<em>{{randomValue}}</em> is the answer to life the universe and everything."
  }
}
```

will result into this in `$translationId` internally:

```json
{
  "DOCUMENT.HEADER.TITLE" : "Header",
  "DOCUMENT.SUBHEADER.TITLE" : "2. Header",
  "DOCUMENT.TEXT" : "<em>{{randomValue}}</em> is the answer to life the universe and everything."
}
```

related issue #14
feat(translateProvider): add a preferredLanguage property

Add the "preferredLanguage" property in order to solve an initial language
setting issue. At the configuration phase it's better to use this property
instead of the "uses" method, because if "rememberLanguage" is set to true
it may invoke a language file loading process twice (the language from the
uses method and a stored language).
chore(preferredLanguage): change demos

Change demo files in order to show a way of using the preferredLanguage
property.
test(preferredLanguage): add simple tests

Add simple tests for basic behavior of the preferredLanguage property.
Merge pull request #28 from knalli/namespace-support

chore(loader): Auto-recognize nested objects supporting namespaces
Add contributor to readme
minor formatting
chore(test-structure): split spec files

split test spec files for better readability and maintaining
Resolved conflict
fix(tests): fix tests for preferredLanguage()
fix(tests): Fix preferredLanguage tests

* change description of tests to represent a state of the module during
the test
* fix the language to try to set in runtime (it must be different from
the current language)
Merge pull request #32 from DWand/little-preffered-language-test-fix

fix(tests): Fix preferredLanguage tests
feat(translateProvider): make translationTable extendable

- use angular.extend() to extend an existing translation table rather then overwriting it anytime

This is for use cases where's one translate service used in many modules which have it as their own dependency. Translations for a specific module get loaded when the module is loaded.

Closes #33
chore(STORAGE_KEY): rename COOKIE_KEY to STORAGE_KEY