Add environment variables YAML config for Applications

fixes #569 
add optional "environment" key to application YAML config
a dictionary of environment variable mappings to be made
available to the application's container
It is a design flaw in the yaml library that it will sometimes produce `unicode` and sometimes produce `bytes`.  We should not propagate this uncertainty throughout the rest of our code.  We should enforce one type or the other (probably mostly `unicode`) at the deserialization layer.  That means checking the type too see if it is `bytes` and decoding it to unicode if necessary (and rejecting anything other than `bytes` and `unicode`).

`types.StringTypes` isn't very useful because you can't treat `unicode` and `bytes` the same.