Refactor Vocab and Data into classes

I'm working toward (1) understanding how all this works, but (2) looking at using other persistence methods (Redis, perhaps), and this refactor seemed quite helpful to me.

All specs pass, and behavior is unaffected, so far as I can tell (which was my intent on this one).

Let me know if you would like me to leave you alone with the PRs, or if I can make them more useful to you, or if you think this is all crap. :)