Add virtual features to Dictionary

This is the _bare_ minimum change to convert `FeatureMeta` into an ADT (except for the dense row change).

Now is a Good Time to get the naming/layout of this new constructor correct.

The next step will be to add support for the dictionary parsing, and then thrift support.

/cc @etorreborre @raronson @markhibberd 
I didn't really need to make this change (and it's isolated to a commit). The above `makeDense` is (even more) broken - and I'll make sure I fix it before all this virtual feature work is done.