Chrome updater: implement support for creating task scheduler tasks.

This CL implements the updater::TaskScheduler class to allow
creating scheduled tasks using Windows's task scheduler.

The code is similar to what //chrome/chrome_cleaner/os has for this
purpose. Future refactoring work to eliminate duplicated code is
possible but unknown at this point how such effort could proceed.

Several dependencies are needed for unit testing this code. The
general idea is that a program is invoked by the unit tests
scheduled tasks. To detect that such program has run, synchronization
with the unit test execution is required.

Since the MS task scheduler API is finicky, minimal changes were done to
the TaskScheduler class implementation.

Bug: 992551
Change-Id: Ia315fa1d2b6d711b0639af20878e96a3659523b1
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1747031
Commit-Queue: Sorin Jianu <sorin@chromium.org>
Reviewed-by: Joshua Pawlicki <waffles@chromium.org>
Cr-Commit-Position: refs/heads/master@{#686267}
20 files changed