Add output support

This patch is big, and I'm not great with git, so let me know if you want me to rebase or split it up or whatever.

It adds a `dumps` function, which outputs edn based on data structures. It also makes the loader and the dumper extensible in the manner described in the edn spec.