Prefetching tags leads to 1 extra join

Before (2 joins):

```
SELECT DISTINCT ("taggit_taggeditem"."object_id") AS "_prefetch_related_val", "taggit_tag"."id", "taggit_tag"."name", "taggit_tag"."slug" 
FROM "taggit_tag" INNER JOIN "taggit_taggeditem" ON ( "taggit_tag"."id" = "taggit_taggeditem"."tag_id" )
INNER JOIN "taggit_taggeditem" T4 ON ( "taggit_tag"."id" = T4."tag_id" ) 
WHERE ("taggit_taggeditem"."content_type_id" = %s AND T4."object_id" IN (%s))
```

After (1 join):

```
SELECT DISTINCT ("taggit_taggeditem"."object_id") AS "_prefetch_related_val", "taggit_tag"."id", "taggit_tag"."name", "taggit_tag"."slug" 
FROM "taggit_tag" INNER JOIN "taggit_taggeditem" ON ( "taggit_tag"."id" = "taggit_taggeditem"."tag_id" )
WHERE ("taggit_taggeditem"."content_type_id" = %s AND "taggit_taggeditem"."object_id" IN (%s))
```

Avoid using ORM private api (sticky_filter) and use one filter call instead of 2 to reduce number of joins.

Above query (1) was kinda slow with large number of tagged items on our setup (postgres).