Rename Feature Meta/Virtual to Definition

Mark, I know this actually the opposite of what we talked about, but I figured this would be nicer to pattern match on and when you need `ConcreteDefinition` directly it has more context. Win/win. :)

We definitely have too many tests that should be using `Arbitrary`, but I don't want to get bogged down fixing them now.
I think this should be `Concrete(enc, ty, desc, tombstoneValue)`