Changes to `convolve`, `fftconvolve`, ...

1. Made the error messages for invalid sizes consistent
2. convolve2d had the check for 'valid' mode size but correlate2d didn't (just output an empty array), so I added it.
3. The same check should be added to fftconvolve, I think.  Currently it uses whichever array is bigger, which I think is the "old behavior" [that was removed from the other functions here](https://github.com/scipy/scipy/commit/6b32937aafcbbb3e4758ddf67da8d573b88b1682).
4. Used `rfftn` for real-input fftconvolve to double the speed, as [I suggested on the numpy trac](http://projects.scipy.org/numpy/ticket/1260#comment:7) ([now here](https://github.com/numpy/numpy/issues/1858#issuecomment-9688656)).  (I hope I did this right and it doesn't break in weird cases)
5. docstring cleanup, typos, etc.
6. fftconvolve [dies with zero-size inputs](http://projects.scipy.org/scipy/ticket/1745), so maybe should add some checks to reject those?  Should probably be fixed [at the fftn level](http://projects.scipy.org/scipy/ticket/1745#comment:2), too, though.
7. Added docstring to fftconvolve (though I think the functionality of fftconvolve should be folded into convolve/correlate/convolve2d/correlate2d and enabled with an option like `fft={True, False, 'auto'}` or `method={'naive', 'fft', 'heuristic'}` and then fftconvolve gets deprecated, as in the numpy feature request, but that requires more extensive discussion)