More spark

Added an op to the expr level, but mostly stuff for spark compute:

- '!=' now in for selection expressions on TableExpr
- Map for spark
- Distinct for spark
I wonder if its cleaner just to test against the raw data?

    assert compute(t['name'].distinct(), data_rep).collect() == ['Alice', 'Bob']