add class hierarchy support to rename

When a method is renamed, the user can choose "perform in class
hierarchy". This will rename methods of the same name in super-
and subclasses. For example, in the following

  class A(object):
    def foo(self): pass

  class A2(A):
    def foo(self): pass

  class B(object):
    def foo(self): pass

A normal rename in A2's foo will not rename A's foo and vice versa.
With the "in class hierarchy" mode, both will be renamed. In both
cases, class B will not be altered, as it isn't a super- or subclass.

Fixes #456