Fixed #9893 -- Filename could exceed max_length on a collision

Passing max_length argument into the Storage's save() and get_available_name() methods.
Rewriting get_available_name() so filenames do not exceed max_length when there is a collision.
Adding test for the case.
In order to avoid breaking backward compatibility with custom storage class with overridden `get_available_name` we should only pass `max_length` if the inspected method allows it and raise a `django.utils.RemovedInDjango20Warning` if it's not the case.