Fixed #23875 -- cleaned up query.get_count()

The query.get_count() can be significantly cleared up due to expressions API changes.
The point is that Django uses sql = "" in some cases to communicate that there are no results for the query (for example qs[:0] generates such SQL internally). We check for this case and convert this to EmptyResultSet, otherwise we would execute the query with an empty (and thus broken) subquery.