[Scheduler]: Revamp SequenceLocalStorage.

This CL fixes a few issues with SequenceLocalStorage:
- Supports holding T with disabled copy/move constructor
  by adding emplace().
- Prevents auto default construction with GetValuePointer.
- Query if SequenceLocalStorageSlot currently holds a value
  with operator bool().
- Update doc to use NoDestructor.

This makes it possible to replace in many cases:
SequenceLocalStorageSlot<unique_ptr<T>> with
SequenceLocalStorageSlot<T>

and
auto ptr = sls.Get();
if (!ptr) {
  ptr = make_unique<T>();
  sls.Set(ptr);
}
return *ptr;

with
return sls.GetOrCreateValue();

[email protected]

Change-Id: I0473fbb4eded35177aa32fabb5377b0cad648c16
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1634876
Commit-Queue: Etienne Pierre-Doray <[email protected]>
Reviewed-by: François Doray <[email protected]>
Cr-Commit-Position: refs/heads/master@{#664708}
14 files changed