Unify write barrier access

This ensures we only have one implementation for the write barrier.
Before Object had it's own implementation and the write barrier itself
as well.

Also removes the aux barrier mechanism for now, since we don't need it.
If we want / need it, we can introduce it again in the future.
Don't conditionalize write barrier with mature guard

This is not correct for the cases where we have concurrent marking
active. We should always use the complete write barrier and not write
short cuts in the calling code for this.
Only call the setter for auto marking if the object changes

This makes sure we don't go through the write barrier unneccessary if
the given object hasn't moved.
Don't use onig_data field for storing non managed results

This ensures that if we do concurrent marking, we don't see this invalid
state at all when recompiling. The GC still sees valid objects then and
there is no race condition here on the initialization.