Test compute numpy

This is almost ready for merging. I have one problem though, with the function on line 49:

```
@dispatch(BinOp, base, np.ndarray)
def compute_up(t, lhs, rhs, **kwargs):
    return t.op(lhs, rhs)
```

Had a lot of trouble figuring out how to call this function, figuring out what it wanted for inputs. Any feedback on this would be appreciated. 
Why is this a failure?  Test names should ideally be more descriptive, saying what they're ensuring.  Something like the following:

    def test_sort_on_non_existent_column_fails()

Although I have to admit that I'm rarely this disciplined myself.

Also, it's strange to see a test that asserts that something should raise a `NotImplementedError`.  If it's genuinely bad behavior then the code should raise something like a `TypeError` or `ValueError`.  If it's something that isn't implemented yet then we don't want to ding someone who implements it with a failing test.