Fixed #20430 - Enable iterable of iterables for model choices

Allows for any iterable, not just lists or tuples, to be used as
the inner item for a list of choices in a model.
Fixed #20446 -- Documentation for SmallIntegerField does not clarify 'small'
Fixed #20335 - Documented the {% language %} template tag.

Thanks bmispelon for the suggestion and djangsters for the patch.
Merge pull request #1128 from erikr/improve-smallint-docs

Fixed #20446 -- Documentation for SmallIntegerField does not clarify 'small'
Merge branch 'allow-any-iterable-for-choices'
extracted prepare_lookup_and_defaults_for_get, create_or_update docstring
extracted code used on get_or_create and create_or_update, create_or_update implementation
working on tests
Working and tested implementation