feat(directive): translate attributes using directive

Add to the translate directive the ability to act on attributes. Using
the translate-attr-ATTR as an attribute, ATTR will be translated.
translate-default, translate-value and interpolation are possible.

Closes #568
feat(directive): translate attributes (optimize process flow)
Merge branch 'feature/translate-attributes' into canary
feat(storage): rename set() into put()

The new api (put, get) is capable with AJS' $cacheFactory.

BREAKING CHANGE: This marks storage.set() as deprecated. In the
next major release v3, the old method `set()` will be dropped in favor
of `put()`.

Relates #772
feat(module): use same fallback for module.run when no storage key is set
and not being able to load locale from storage

By @greckin

Closes #739
Fixup 247253d cache.put should be mocked

Fixup 247253d because of ef6a613
Fix idention
Revert part of 508fd32 (06818ab)

`translationIds` cannot be stored in scope because will be interpolated recursivly

Relates #568
docs(directive): improve api doc for translate cloak class name
docs(guide/uk,ru): Add "Loader configuration" and "Using a cache" chapters

Chapters about loader configuration and usage of a cache are translated into Ukrainian
and Russian languages.
feat($translateUrlLoader): allow to use custom query parameter name for url loader

Make the $translateUrlLoader more flexible by allowing user to pass name of
query parameter that will be used to fetch translations.
docs(service): add interpolationId to the documentation
fix(directive): ensure directive's text will be parsed at least once

This fixes an issue with AJS 1.3.2+

Solves #822
Solves #831
fix(messageformat-interpolation): fix support for messageformat 0.2.*

Fix/solution for: messageformat's `locale_name` is not optional any more.

Solves #814
Solves #787
docs(directive): add doc for directive-attribute translate-default
docs(directive): add doc for directive-attribute translate-compile
fix(service): apply fix for empty strings in `navigator.language`

Solves #821
fix(service): fix npe when resolving fallback language for `instant`

Relates #752
docs(guide): update to keep up with the actual code

As of today, language negotiation tries to use `navigator.languages` first element, if available.
docs(guide): update to keep up with the actual code (fixup c28f6a9)

As of today, language negotiation tries to use `navigator.languages` first element, if available.