[DL] Implement all-or-nothing display locking.

This patch adds ability to delay style until display lock is committed.
However, once committed it will go through all the phases and display
contents synchronously.

It adds the ability for the DisplayLockContext to keep track of the
current state, making it easier to reason about what should happen
next. As well, it adds a lifecycle update state to keep track of which
lifecycle stage should occur next.

This is a stepping stone towards a correct solution.

R=chrishtr@chromium.org

Bug: 882663
Change-Id: I660e81d9cd30604883f8f4971920a1bb19dafe67
Reviewed-on: https://chromium-review.googlesource.com/c/1334656
Reviewed-by: Chris Harrelson <chrishtr@chromium.org>
Commit-Queue: vmpstr <vmpstr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#608470}
16 files changed