An initial pass at a generic emitter

This emitter was designed to work without the use of an activerecord
model. It is definitely a bring your own data situation.

**This pull request is in progress, review as you see fit but keep in mind that this code is evolving**
I beg to differ: these comments inevitably* get out of sync with the code. I don't mind explanation of ambiguous arguments.

 \* Unless you use an IDE or linter that treats it as an error when args don't agree with documentation.