Import fftconv.py with some pep8 modifications.

This comes from Sander Dieleman <sanderdieleman@gmail.com> (@benanne
on github).
Use the fft version of convolution for the valid mode.
Fix import loop involving fftconv.
Last fix for the import problem.
Attempt at adding support for the 'full' border mode.
Add some tests (that all fail due to shape errors at the moment).
Fixed some typos and a dimension that was probably wrong. This doesn't solve the issue with the boder_mode='full' because we still have other errors.
Added support for images whose last dimension is odd. This is more expensive computationally, and it costs more in memory, but it's optional.
Add a config flags to enable/disable the conv2d_fft opt.
Fix the test to actually work.
Renamed a variable because I gave it a ridiculously long name.
border_mode 'full' now working and tested.
Also test the full mode.
Add forgotten comma.
use unittest_tools.assert_allclose() instead of numpy.testing.assert_allclose()
Test mistake.
Change the way to enable the optimization from a theano flags to a registered, but disabled opt.
Add optimization for the full mode and update the tests to work with the new way of enabling them.
Fix tests so that they pass and test what we want.
Add a mention of conv2d_fft in the docs and write a better docstring for it.