Changed order of method swizzling to avoid infinite valueForKey loops

I was running into infinite loops where both the associated valueForKey method stored with originalValueForKeyIMPKey and the actual valueForKey method were the same implementation.  This was happening when there were multiple subclasses of a class that implemented textInputTraits.  This solution just enforces that superclasses are updated before subclasses.  Admittedly this was my first attempt at writing code that changed methods at runtime but my team has been using the solution for a few weeks without any issues.