Move custom rf class outside the combsimp definition

This fixes, or rather, works around, a bizarre caching issue involving classes
defined inside functions.  See the discussion on pull request #1710.
Make `orientnew` respect parent class
Added slices to the prime sieve.

The following syntax is now possible when using the prime sieve:

```python
from sympy import sieve

assert sieve[5] == 11
assert list(sieve[5:10]) == [sieve[x] for x in range(5, 10)]
assert list(sieve[5:10:2]) == [sieve[x] for x in range(5, 10, 2)]
```
Make count_ops() work with logic operations by creating a binary tree. Bug was that Logic functions are not the instance of sympy.core.expr.Expr due to which logic operation were actually skipping to "else" case.
Fixes #7010
Added tests of the logic functions for count_ops() function.
Fixed a test case of Xor(x,y) = 2*AND + OR
Fixed the test case for Nand(x,y).count_ops(visual=True) = OR and Nor(x,y).count_ops(visual=True) = AND
Removed the obsolete test case which was addressing the bug.
Included the case of logic function in the "else" case.
removed the XXX comment to report bug.
Removed the case for logic functions because it was contradicting with every other function's ops which is Basic but not isinstance(expr,Expr)
Final commit, added the logic function to be counted in  count_ops()
fixes factor(), separatevars(), combsimp() from Issue #6280
remove the else condition and added the is.Boolean condition to general Basic instances.
Removed redundant tests count_ops(Basic()) = S.zero
Removed trailing whitespaces, will always check them first.
Added the cases to handle the exception of True and False, who were behaving as logic function.
Fixed the bug.
Merge branch 'master' of https://github.com/sympy/sympy
Minor fixes to sympy.core.sets API documentation

This patch makes some minor fixes such as referring classes correctly
for the sympy.core.sets module.