Reland "[oilpan] Fix GCInfoTable for multiple threads"

Previously, grow and access from different threads could lead to a race
on the table backing; see bug.

- Rework the table to work on an existing reservation.
- Commit upon growing, avoiding any copies.

Reland:
- Fix an issue for component builds were the singleton was instantiated
  multiple times.

Drive-by: Fix over-allocation of table.
This reverts commit 4e481c2a6ff1d20fe135155559301c489316de4f.

Bug: chromium:841280
Change-Id: Ia89f135b3936162c6f938cb3aef3cfa73f964dd2
Reviewed-on: https://chromium-review.googlesource.com/1068636
Reviewed-by: Kentaro Hara <haraken@chromium.org>
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#560517}
12 files changed