Use gradient_undefined instead of None in MRG uniform
Catch exception and forward NullType to input gradients, instead of failing
Try to fix how Null gradients are propagated in Scan

- propagate NullType when summing different gradient contributions
- identify which outer outputs of the scan node implementing the grad
  should be Null
- replace them, and the corresponding inner variables, with zeros
  of the appropriate size, so the scan node can be compiled and run.
- introduce a difference in undefined gradient because going through
  a shared variable with updates, and because a NullType was returned
  by the internal graph.
Actually compile and run the grad scan node.
Update comment, indentation.
Convert python literals to theano constants before handing them off to Subtensor.
Fix get_scalar_constant_value().
Fix syntax error.
Fix typo.
Refactor. Use decorators for skipping cuda-only-tests.
Unpickle cudaNdarray as numpy.ndarray, if cuda is not enabled.

However, emit a warning.
Create test file for type test and move test case.
Fix Variable.eval() (issue #1724 on github)

It is now possible to call Variable.eval() with different sets of input
parameters.
Change local variable name.
Give more evidence to hint for more debug information.
Better backtrace storage.

Raise the backtrace limit to caught where v1 + v2 is created in user script.
Remove the add_tag_trace from the bt.
Fixed memory leaks in cumsum and cumprod.
When a thunk fail, print the back-trace of the node creation.
when a thunk fail, always print the node.inputs types.
Merge pull request #1737 from MarcCote/cumsum_memoryleak

Fixed memory leaks in cumsum and cumprod.