Switched to more robust class type detection.

Originally, I'd thought it was enough to pre-store class addresses and just compare pointer values, but it looks like the Objective-C runtime is free to change the class address while the app is running (the simulator doesn't do it but the device certainly does), so I've switched to a name string comparison with cache. The cache will work fine for my purposes since at crash time, the Objective-C environment is effectively frozen.