I think the best way to go about this might be to create a bunch of factory functions rather than implement the details in the class constructors, similar to what Matlab (and therefore matplotlib) does. I.e., the `plot` command takes some basic data structure and returns a full instance of the Figure->Axes->Line/Label hierarchy, which the user is then free to modify if they want. 

In this case, `plot` (or `bar`, whatever) returns a class containing a "default" grammar definition with the given data. Vega lets us avoid the Matlab hierarchal model for the backend. Which is good, because it's a train wreck.

This would hopefully make potential changes to Vega easier to incorporate too, since there's a well-defined separation of the backend and frontent. The casual users shouldn't even notice. It should also be easier to test.

Any thoughts on this? There might be some problems with it I haven't thought of.