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.
Style nitpick (doesn't really require action): when splitting across multiple lines (especially more than 2) I tend to just open parentheses and forgo the backslash escapes. Per PEP8,

> The preferred way of wrapping long lines is by using Python's implied line continuation inside parentheses, brackets and braces. Long lines can be broken over multiple lines by wrapping expressions in parentheses. These should be used in preference to using a backslash for line continuation.
>
> Backslashes may still be appropriate at times. For example, long, multiple with-statements cannot use implicit continuation, so backslashes are acceptable:

Especially when it's an assignment, this plus lining up all the lines of the expression with the open parenthesis makes it visually clearer that it's all one expression on the RHS of an assignment.