BUG : np.sum silently drops keepdims for sub-classes of ndarray

change test from `type(a) is not mu.ndarray` to `not isinstance(a, mu.ndarray)`

This bug can be demonstrated by:

```
class test_array(ndarray):
    pass

base_ = np.arange(30).reshape(5, 6)
tt = base_.view(test_array)

def sum_test(a):
    print(np.sum(a))
    print(np.sum(a, keepdims=True))

sum_test(base_)
sum_test(tt)
```
Actually a class is a type, so you could do
```
In [1]: class a(object): pass

In [2]: b = a

In [3]: b is a
Out[3]: True
```
If you want to keep the `is` construction. Seems a bit strange though. Hmm... I'd actually like @njsmith to comment on this.