suite: add --dry-run

Signed-off-by: Sage Weil <sage@inktank.com>
suite: make names a bit more friendly

Signed-off-by: Sage Weil <sage@inktank.com>
suite: make collection args (optionally) relative to a base dir

Signed-off-by: Sage Weil <sage@inktank.com>
suite: clean up imports

Signed-off-by: Sage Weil <sage@inktank.com>
suite: generalize collection expansion

Previous, a collection was a directory like this:

 mycollection/
 mycollection/facet1/
 mycollection/facet1/1a.yaml
 mycollection/facet1/1b.yaml
 mycollection/facet2/
 mycollection/facet2/2a.yaml
 mycollection/facet3/
 mycollection/facet3/3a.yaml
 mycollection/facet3/3b.yaml

and this would expand to

 1a + 2a + 3a
 1a + 2a + 3b
 1b + 2a + 3a
 1b + 2a + 3b

The fixed directory depth and requirement for a subdir even
when there is only 1 item is annoying.  Instead, allow an
arbitrary directory structure, with the following rules:

 - a .yaml file is a taken as-is (duh); other files still
   ignored
 - a directory is normally just a way to organize files.  We
   recursively descend and build a list of what we fine.
 - a directory with a '%' file in it is special:
     - take the product of every item in the dir (much like
       we did before)
 - a directory with a '+' file in it is special:
     - concatenate everything in the dir into one job

Note that this is equivalent to the previous structure if we
do:

 for facet in mycollection/* ; do touch $facet/% ; done

We can clean up slightly be taking any dir with only one yaml
file in it and replacing the dir with the bare .yaml.

Once this is done, we can reorganize directories however we
like.

Signed-off-by: Sage Weil <sage@inktank.com>
suite: allow individual files to be scheduled

Signed-off-by: Sage Weil <sage@inktank.com>
suite: build_matrix as a list of filenames, not file content

Signed-off-by: Sage Weil <sage@inktank.com>
suite: document build_matrix

Signed-off-by: Sage Weil <sage@inktank.com>