Oilpan: automate TraceTrait/ObjectAliveTrait for non-leftmost deriving classes

Note: This is a port of https://codereview.chromium.org/177173002/ landed in the branch.

This CL introduces GarbageCollectedMixin interface, and its implementation helper macro USING_GARBAGE_COLLECTED_MIXIN to automatically define TraceTrait/ObjectAliveTrait on non-leftmost deriving classes which need to be garbage collected.

Consider the following case:
class B {};
class A : public GarbageCollected, public B {};

We can't correctly handle "Member<B> p = &a" as we can't compute addr of object header statically. This can be solved by using GarbageCollectedMixin:
class B : public GarbageCollectedMixin {};
class A : public GarbageCollected, public B {
  USING_GARBAGE_COLLECTED_MIXIN(A)
  };

  With the helper, as long as we are using Member<B>, TypeTrait<B> will dispatch adjustAndMark dynamically to find collect addr of the object header. Note that this is only enabled for Member<B>. For Member<A> which we can compute the object header addr statically, this dynamic dispatch is not used.

BUG=None
R=ager@chromium.org

Committed: https://src.chromium.org/viewvc/blink?view=rev&revision=167998

Review URL: https://codereview.chromium.org/182613004

git-svn-id: svn://svn.chromium.org/blink/trunk@168021 bbb929c8-8fbe-4397-9dbb-9b2b20218538