Fill out Spark implementation

This builds on the scalar-expr refactor #319 to fill out the spark backend. 

We add

* Reductions (min, max, sum, count, nunique, any, all, ...)
* A unified system around the rowwise operations (Projection, Column, Map)
* A clean split-apply-combine that works with much more general arguments
* Various small operations like head and sort
* Significant amounts of testing against the Python backend

TODO:

- [x] Multi-column grouper on By
- [ ] Fiddle with travis.ci to have a separate spark build/test

This docstring isn't connected to its function, is this how it's supposed to work? Here's what rowfunc tells me:

```
In [22]: from blaze.compute.python import rowfunc

In [23]: rowfunc?
Type:       Dispatcher
String Form:<dispatched rowfunc>
File:       c:\users\mwiebe\anaconda\lib\site-packages\multipledispatch-0.4.3-py3.3.egg\multipledispatch\dispatcher.py
Definition: rowfunc(self, *args, **kwargs)
Docstring:
Dispatch methods based on type signature

Use ``dispatch`` to add implementations

Examples
--------

>>> from multipledispatch import dispatch
>>> @dispatch(int)
... def f(x):
...     return x + 1

>>> @dispatch(float)
... def f(x):
...     return x - 1

>>> f(3)
4
>>> f(3.0)
2.0
Call def:   rowfunc(self, *args, **kwargs)
```