fix(translateDirective): fixes bad coding convention
chore(translateDirective): rewrites translateDirective

this commit rewrites the translateDirective to improve general perfomance.

Improvements:

- it unwatches translation id's once translated and only watches again for the
  next translate cycle
- it only keeps concantly watching for translations with translate values

which means when using 200 translations and they do not change digest cycles will
not re-evaluate them, since it's not needed. translation id's will only be watched
when a translation change is happening, once it's done, translation id's are unwatched
again.
feat($translateProvider): adds determinePreferredLanguage()

gives angular-translate the ability to determine the preferred language
on it's own depending on the browsers locale or a custom function.
feat($translateProvider): adds registerAvailableLanguagesKeys for negotiation

makes it possible to define available languages keys and possible aliases
to automatically determine locale.
docs(variable-replacement): updates docs on variable replacement

we recently added the feature to also pass in an object expression
into the translate-values attribute. Here are the updated docs.
feat(translateDirective): teaches directive custom translate-value-* attr

you're now able to add translate values via

```js
<ANY translate="TRANSLATION_ID"
     translate-value-foo="bar"
     translate-value-another="yay"
     ></ANY>
```

you're able to pass in a string or an interpolation so things like

```js
<ANY translate="TRANSLATION_ID"
     translate-value-foo="{{evaluate}}"
     ></ANY>
```

also work.

And yea this feature is progressive enhancement which means you can use it
along with `translate-values` as well without breaking your code. :)

Fixes #188
Merge branch 'canary' into feature/xss-protection

Conflicts:
	test/unit/directive/translate.spec.js