feature matrix definition in yaml

This adds a definition mechanism for the d-g feature matrix in
yaml, a python tool to process that into an ENABLED_SERVICES list
and a test script to verify that it works as expected.

The theory here is that we create configs (which match to d-g
DEVSTACK_GATE_ vars) that enable or disable "features". The
features then enable or disable "services" (and eventually
extensions).

An important part of this is the ability to rm-* content. That
means the neutron feature can rm-services: n-net. The hope is
this makes reviewing changes more straight forward, and also
makes it so if something goes wrong we don't run a job missing
services, because we don't need to make sure we add things in
the else clauses.

A follow up patch integrates this into d-g proper, but this
patch seemed easier to review on it's own.

Change-Id: Ib030f820073dd0b450b362fd721f9477778c04b0
use feature grid for service selection

this uses the feature grid for service selection in all the
devstack-gate jobs

Change-Id: Ie543feb5b6557f1b33f1a0d7edfbc198a749eb0c