Add a "hwtest" tree

Add two additional component types - "minimal" and "hwtest".
"minimal" components are needed to boot a basic text-only command line environment.
The "hwtest" tree will include the "minimal" components plus some extra components
(like DHCP and iSCSI servers) that are needed for the controller and update images
for the GNOME Hardware Testing Project.

https://bugzilla.gnome.org/show_bug.cgi?id=732394
Mark components as "minimal"

Mark components that will be needed for both the normal runtime and
the hardware testing controller as "minimal".

https://bugzilla.gnome.org/show_bug.cgi?id=732394
Add components needed by gnome-hwtest

Populate the hwtest tree with the external components needed for the
GNOME Hardware Testing Project. These are:

 gnome-hwtest: The GNOME Hardware testing scripts (included in minimal
  since we want to have the subset used for running the tests in the
  runtime image)

 gjs-minimal: a version of GJS built without GTK+ and Cairo support -
  gnome-hwtest uses this for its runtime.

 iPXE: Used to network boot with iSCSI support

 GRUB: Used to find the partition we want to boot into

 dnsmasq: Used as a dhcp server for exporting boot parameters from
  the controller to the target machines.

 lighttpd: Used to export files to the target machines from the controller

 tgt: Used to export boot images over iSCSI (It turns out this is a
  somewhat obsolete daemon - the kernel support for iSCSI targets plus
  targetcli would be the modern way to do it. tgt works for our needs,
  but it could be switched over to targetcli later.)

 open-iscsi: Used to mount iscsi volumes on the target machine.

 socat: Used for exporting logs from the target to the controller.

https://bugzilla.gnome.org/show_bug.cgi?id=732394
Reenable building video drivers for hardware

Go back to building the Mesa and Xorg drivers for Intel, Radeon,
and Nouveau.

https://bugzilla.gnome.org/show_bug.cgi?id=732394
hwtest: Set default target to gnome-hwtest.target

When creating the hwtest tree, we want the default systemctl target
to be gnome-hwtest.target, so that we can start the appropriate
activity (install, controller, update)

https://bugzilla.gnome.org/show_bug.cgi?id=732394
Add support for "child components"

A child component is a bit like a submodule - it's a directory inside a parent
module that is checked out from version control. But instead of being
configured in git, it is configured in manifest.json - the reason for
this is to allow us to rebuild the outer module whenever the inner
module changes, rather than having a fixed version of the inner module.

Child components must have unique names globally within manifest.json - this
is because they are treated like main components in certain contexts:
in particular names of child components can be passed in the
'fetchComponents' argument of 'resolve' and child components appear
independently in the bdiff output.

This will be used for the kernel build where the outer module has our
configuration and build scripts, and the inner module is the actual upstream
kernel tree.

https://bugzilla.gnome.org/show_bug.cgi?id=732395
Build the kernel as a component.

Move building the kernel from part of the Yocto base to a component
(kernel configuration lives in a new gnome-continuous-kernel git
module.)

The advantage of this is that we can include an upstream kernel branch in
our regression testing and don't need to wait for a complete new
version of Yocto to pick up kernel changes.

https://bugzilla.gnome.org/show_bug.cgi?id=732395