Cleanup unused location tracking in InlineCache
Add resulting visibility to dispatch and method missing rason

The eventual goal is to unify all dispatch lookup into a single method.
Right now the inline cache and global cache both have separate method
lookup mechanisms.
Cleanup method lookup logic

We had different places where method lookup logic was implemented,
with small differences even between them. This unifies all the lookup
into a single code path so we only have to maintain this single path.
Fix lookups for public_send and public_method

These were actually incorrect but worked due to bugs in the lookup
logic. We need to call these methods with the proper self so protected
checks work as they should.
Use Dispatch as the point to do method lookup on

This makes GlobalCache less a dependency of other code, allowing to
refactor it or remove it easier in the future.

Also remove an apparently unused helper method.
Add tags for failing 2.0 mode specs
Switch to using vectors for tracking JIT runtime data

Vector does suffer from having to grow from time to time, but this is
less problematic than using std::list in these cases because they
require an allocation for each element added. We also don't need any of
the different semantics here of list, so using a vector works better.
Always check should_stop after decrementing count

This race can also occur for threads that are not the last, if another
thread would decrement and properly stop and this thread would decrement
just before that.