Can you use a `Hash` to speed up most of these lookups? Something like:

``` ruby
@handler_cache[object.class] ||= @handlers.detect { |klass, _| klass === object }.last
```

What's the indented behavior with subclasses here? It seems like there isn't a way to override handling for a subclass, as earlier handlers currently take priority.