missing c_set_tensor4d in GpuDnnConvBase
Merge pull request #2241 from ynd/dnn_conv_fix

missing c_set_tensor4d in GpuDnnConvBase
pep8
add docstring and swap parameter order to be the same as make_node
doc cudnn stuff
Now by default, if cuDNN is available, always use it.
better doc
make dnn detect if the library can be loaded.
Better error message when Theano isn't able to use cuDNN
change error type
Catch exception if open() fails as well.

Drop support for python 2.4.
Do not create an array when computing a scalar division
Make sure scalar ops do not compute in float16

Ops that are defined with upcast_to_float should upcast to
float32 or float64 minimally.

Add tests for the cases where the inputs were int8, which is when
float16 values appeared.
Do not try to generate C code for complex inverse
In elemwise.perform, make sure numpy ufuncs do not compute in float16

Since many elemwise ops do not call the scalar op's impl() method,
we needed to also change the perform method when numpy built-in
ufuncs are used.
Add helper functions for specifying the "expected" values

Otherwise, the expected values could be computed in float16,
which would not be precise enough, and which would not be supported
as a dtype by Theano.
Add int8 values in elemwise tests.

Also:
- add tests for "inv" op
- do not test inplace if the input is int and the output is float
- remove a couple of redundant dicts
Fix inplace tests for division
Fix output dtype of Ops in tensor.nnet
Update tests in tensor.nnet