refactorize & add watch on i18next options

This adds support for watching i18next options. Something like this:
```html
<p ng-i18next>[i18next]({
  count: someScopeValue || 0
})ns:someKey</p>
```

was not refreshing the value when `someScopeValue` changed. This implicated a lot of changes so I got my sleeves up and came up with some changes to make the code easier to understand while retaining full compatibility with previous features.

Hope it helps.