power: Add support for docked mode.

This adds "docked mode", a state where the system avoids
suspending when the lid is closed while an external display
is connected.  When entering this mode, the internal panel
is also turned off while external displays are left on.

BUG=chromium:218387
TEST=added unit tests; also did manual testing using various
     hardware

Change-Id: I57ba627de1d32530efff76a24219c494bdfc3944
Reviewed-on: https://gerrit.chromium.org/gerrit/46717
Commit-Queue: Daniel Erat <derat@chromium.org>
Reviewed-by: Daniel Erat <derat@chromium.org>
Tested-by: Daniel Erat <derat@chromium.org>
16 files changed