ENH: scipy.spatial.distance: use BLAS and waste less memory

This module was using np.linalg.norm instead of the SciPy version,
which switches to BLAS when appropriate.

The change to sqeuclidean makes it four times faster for length-1e5
random vectors using NumPy 1.6.2 linked against ATLAS 3.8.4:

>>> %timeit ((u - v) ** 2).sum()
1000 loops, best of 3: 2.01 ms per loop
>>> %timeit u_v = u - v; np.dot(u_v, u_v)
1000 loops, best of 3: 552 us per loop
BUG: spatial.distance: always convert to float in sqeuclidean

Integers are subject to silent wraparound in the subtraction and
squaring operations, as pointed out by @jakevdp. Some unnecessary
copying may occur, but any call where both arguments are float
arrays still only allocates a single temporary array.
Merge pull request #2825 from larsmans/blas-spatial-distance

ENH: spatial: use BLAS in scipy.spatial.distance.sqeuclidean