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 
Bike shedding:
```
sealed trait Definition
case class ConcreteDefinition()
case class VirtualDefinition()
```

Generally - the import bit concrete vs virtual. Meta/Metadata is a bit overloaded. I like that dictionaries have definitions.