Unicode bug

I went with `env = {str(key): str(value) for key, value in env.items()}` as it is robust to any future additions to the `env` dictionary.
The way `__str__` is implemented for `MetaData`, it just calls `__unicode__` and then either encodes the result (for Python 2) or just returns it as is (for Python 3).  That would have to be changed if you used `unicode`.  Not saying that's a bad way to do it, but it just requires an additional change.