getKeyEnv, replace file storage with environment variable

[Reference](https://github.com/yesodweb/yesod/issues/806).

The basics of the idea are here, but it's not quite ready.

TODO:

- [x] I'm open to better names for the functions introduced and the executable
  I added. These seem good to me, but they aren't what was discussed in the
  reference PR.

- [x] The Base64-encoded string which gets generated, printed, and stored in
  the environment variable still has some funny characters that make my
  terminal go wonky, I'm assuming this means it's incorrect -- I'm a bit stuck
  on where I went wrong or what I need to do.

- [x] If base >= 4.7.0 is too new to ship, I'll have to write my own `lookupEnv` 
     and `setEnv` (possibly use the setenv package for the latter).

Would love some early feedback / pointers.

Thanks!

*EDIT*: added TODO about base-4.7.0