Support global and matrix environment variables

This PR adds support for environment variables definition in YAML.

You can define either environment variables that apply to all environments (global), or a matrix of environment variables.

The following example
````
env:
  global:
    - ALPHA=a
  matrix:
    - FOO=BAR
    - FOO=BETA
````
will create 2 environments
- ALPHA=a and FOO=BAR
- ALPHA=a and FOO=BETA