Concept data

This is a giant pull request, all about concept data. To be honest, I'm not totally comfortable with it yet, but it's time to merge it back and see what happens. There are several improvements to the code in here that I definitely want to see in master.

Before merging, let's pair on this, @marcesher, and get your thoughts on the code.