RF: common dtype for squash_ without result_type

``squash_`` used ``np.result_type`` to work out a common dtype for the
passed arrays, but ``result_type`` is a 1.6.0 innovation   Simulate
``result_type`` for numpies < 1.6.0.  Test.
RF: use quicker type detection for scalars

Bago pointed out that the method I was using was rather slow
(``reduce(np.add, list_of scalars)``).  Use python sum instead, slightly
tweaked.  This is about 2x faster, and in the same ballpark as the
``np.result_type`` solution.
TST: extend test of _squash function masking

Squash function was mixing None and mask masking
RF: Cython version of squash routine & benchmarks

Cythonize squash routine and add benchmarks

Gives benchmark outputs for `fast` (Cython) and `slow` (previous code):

Squashing benchmarks
floats
fast 0.75; slow 1.20
With None: fast 0.76; slow 1.21
With mask: fast 0.76; slow 1.14
Other dtype: fast 0.76; slow 1.14
ints
fast 0.75; slow 1.16
With None: fast 0.74; slow 1.16
With mask: fast 0.76; slow 1.11
Other dtype: fast 0.76; slow 1.11
arrays
fast 1.07; slow 4.30
With None: fast 1.11; slow 4.40
With mask: fast 1.06; slow 4.25
Other dtype: fast 1.05; slow 4.23
scalars
fast 0.73; slow 2.78
With None: fast 0.73; slow 2.82
With mask: fast 0.74; slow 1.27
Other dtype: fast 0.73; slow 1.26
Merge pull request #116 from matthew-brett/fix-squash-result-type

RF: common dtype for squash_ without result_type