subfactorial is an integer

I have implemented `_eval_is_integer` in `subfactorial`, so that the output of this function is considered to be an integer. Since the input of this function must be an integer, perhaps `return True` would have been better - but I have chosen this alternative, as I would like to see this:
```python
>>> k = Symbol('k', integer=True, nonnegative=True)
>>> floor(subfactorial(k))
subfactorial(k)
>>> x = Symbol('x', real=True)
>>> floor(subfactorial(x))
floor(subfactorial(x))
```
Same comment applies here as [here](https://github.com/sympy/sympy/pull/8490): use fuzzy_and and test as described on that PR, too. Basically, when using the assumptions system you should never chain conditions with `and` or `or`.