Fix #23662 - Make __nonzero__(), __len__() lazy

QuerySet.__nonzero__(), QuerySet.__len__() caused unexpected behaviour by unnecessary queryset evaluation.
Methods rewritten using proper lazy methods of QuerySet.