servo_updater: introduce channels
servo_updater: introduce channels

This change introduces the ability to pull an update from a specific
channel (i.e. a specific file). See the bug for details on this project,
but basically the `servo-firmware` package now bundles multiple firmware
in the system, all of which are tagged to belong to a 'channel'. The
name of those files is then [board_name].[channel].bin. The updater then
now supports the notion of requesting a specific channel to update, if
the default (stable) is not desired.

Like the previous CL it also leverages choices for argparse to ensure no
unknown channels are requested.

BRANCH=None
BUG=b:179310743

TEST=servo_updater --help | grep channel
-c {alpha,dev,prev,stable}, --channel {alpha,dev,prev,stable}

TEST=sudo servo_updater --board servo_micro -c alpha
Current servo_micro version is   servo_micro_v2.4.35-f1113c92b
Available servo_micro version is servo_micro_v2.4.35-f1113c92b
No version update needed

Cq-Depend: chromium:2674405
Change-Id: I88c301cc4ff0ac246cbfda6498c27a1fd23f722f
Signed-off-by: Ruben Rodriguez Buchillon <12b0357cd989b603267f0b7cb81c747471f94bd1@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2661019
Reviewed-by: Brian Nemec <4bb9322d2721abaa797f20e8e3863e6a19240e0a@chromium.org>

coreboot/chrome-ec,coreboot/chrome-ec,coreboot/chrome-ec,coreboot/chrome-ec,coreboot/chrome-ec,coreboot/chrome-ec