The aim of this patch is to enable JITEventListeners to work with ORC without
forcing us to keep object files alive longer than necessary.
Currently JITEventListener::NotifyObjectEmitted and NotifyObjectFreed take a
reference to the object file being emitted, but in NotifyObjectFreed this is
only ever used as a key to deallocate resources that were allocated in
NotifyObjectEmitted. Switching to an abstract key allows the JIT to deallocate
object file buffers after NotifyObjectEmitted has been called.
No guarantee is made about the key value, except that it will be distinct for
each object that has been allocated. Keys may be re-used after they are freed.