RMSProp learning rule implementation

The implementation is based heavily on the AdaDelta learning rule.  Tests still needed -- should hopefully be able to get around to that over the course of the next day.  

The motivations and math behind RMSProp are described by Geoffrey Hinton at the lecture slides below: http://www.cs.toronto.edu/~tijmen/csc321/slides/lecture_slides_lec6.pdf.
Would something like the following be reasonable (keeping more or less the same warning added by @lamblin)?  

```
if param.name in self.mean_square_grads:
    warnings.warn("Calling get_updates more than once on the "
                             "gradients of `%s` may make monitored values "
                             "incorrect." % param.name)
# Store that variable in self.mean_square_grads for monitoring.
self.mean_square_grads[param.name] = mean_square_grad
```