Feature/fallback refactor

__Completed__

The goals of those changes are as follows:
* Cleanup the manager zoo. There are too many, and they serve no purpose. __[done]__
* Allow full customization of queryset classes used for `language()`, `untranslated()` and `get_queryset()`. __[done]__
* Implement missing features of the `FallbackQueryset`. I have `get()` in mind but it is likely there are others. __[works as is, added tests]__
* Have fallbacks that do not eat the database alive. __[done - requires Django 1.6+]__
* Have an easy way to setup fallback querysets to try current language first. Current language should be lazily retrieved at query time. __[done]__

__Notes:__
* Changes to the API were kept minimal. The biggest impact is the removal of `_real_manager` and `_fallback_manager`, which projects should not use and have no reason to.
* The working of `FallbackQueryset` was completely redone for Django 1.6 and newer, as it is possible now to inject predicates into JOIN clause, which allows us to delegate the work to the database, and never do more than 1 query. Projects should not see any change but for the increased speed, and new behavior can be disabled by setting `settings.HVAD_LEGACY_FALLBACKS` to `True`.
* Adding current language to fallback queryset was as simple as allowing None to be used, and automatically replaced by a call to `get_language()` when `iterator()` is invoked. As an added benefit, using `None` this way is coherent with the way `TranslationQueryset.language()` works.
* The `translation_fallbacks` attribute is now exposed on `FallbackQueryet` to enable creation of a subclass that overrides the default fallbacks, for instance for setting a default set of fallbacks:
```python
class MyFallbackQueryset(FallbackQueryset):
    translation_fallbacks = (None, 'en', 'de', 'fr')

class MyModel(TranslatableModel):
    objects = TranslationQueryset(fallback_class=MyFallbackQueryset)
```