Fix creation of duplicate redirections

Change processing of redirections to bind redirections starting with the
most derived class, rather than the other way around, and to ignore
method signatures that have already been bound. This prevents us adding
the same signature more than once, which confuses the overload
resolution and produces generated code with build errors.

Note that this isn't quite right as it doesn't account for the usual
shadowing rules. While this in and of itself would not be hard to
implement, it would possibly cause more harm than good given that we
don't appear to parse 'using' declarations, and so would tend to drop
more methods than we should in real life code.

Change-Id: Ic19776f283153d30b2f1bd56d7969fd535750b26