Ensure proper finalization of garbage-collected types.

This CL reflects the finalization requirements of the Blink GC clang plugin. In
particular, the plugin uses clang's notion of when a class has a 'trivial
finalizer' to ensure that classes that do not have trivial finalizers are
derived from finalized GC base classes.

In order for this to work, the collection types must not have user-declared
destructors when instantiated with the heap allocator. In the case of Vector, the
rules are further complicated since a heap-allocated vector can have inlined
elements, and if they need finalization then so does the heap vector.

R=erik.corry@gmail.com, vegorov@chromium.org
BUG=

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

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