cms.utils.plugins: builtins refactors

requires_reload(): any()
downcast_plugins(): list comp
assign_plugins(): simplified call of build_plugin_tree

build_plugin_tree():
Now accepts an iterable of plugins
Use groupby to collect plugin families
Sorting the input iterable first guarantees the children tuples are sorted
cms.utils.django_load iterator refactors, using Py3-like builtins

iterload(): filter()
iterload_objects(): map()
cms.utils.i18n: builtins refactors

get_language_list, get_language_tuple, get_public_languages: list comps
get_language_dict: dict(get_language_tuple)
is_language_prefix_patterns_used: any()
cms.utils.urlutils refactors

levelize_path(): list comp
prepend slash explicitly, not relying on join of empty string
splitting all slashes and filtering empty strings also converts paths with
consecutive slashes

urljoin():
The conditionals became simpler because '/'.join(stripped) never could have
started or ended with a slash