Fixed #19173 -- Made EmptyQuerySet a marker class only

The guarantee that no queries will be made when accessing results is
done by new EmptyWhere class which is used for query.where and having.

Thanks to Simon Charette for reviewing and valuable suggestions.
Tests for various emptyqs tickets

The tickets are either about different signature between qs.none() and
qs or problems with subclass types (either EmptyQS overrided the custom
qs class, or EmptyQS was overridden by another class - values() did
this).

Fixed #15959, fixed #17271, fixed #17712, fixed #19426
Fixed #16759 -- Remove use of __deepcopy__ in qs.clone()

The original problem was that queryset could be really expensive in
certain situations, when the __deepcopy__ went too deep copying Meta
attributes of the models used. To fix this, and other speed and code
cleaness issues this commit removes the use of __deepcopy__ in the
qs, and instead uses .clone() in the internals.