Bug 869542: Add aspects, secret()

The new secret() function looks up a named secret.

Aspects cross-cut the concerns represented by the toplevel hierarchy.
The only currently-defined aspect is "staging", but others will be added
in the future.  The secret() function supports aspects automatically,
looking up secrets by `{name}!{aspect}` before defaulting to `{name}`,
allowing secrets to be altered by aspects easiliy, without special
handling in the modules using the secrets.