Add interface for hover, update, enter, exit properties

This branch makes it possible to do things like this:

```
ggvis(mtcars, 
  props(x = ~wt, y = ~mpg, size.hover := 400, size.update := 100, fill.hover := "red"),
  mark_symbol()
)
```

Notice that in the case above, `size.update` is needed but `fill.update` isn't. This is because `fill.update` has been set via the default props for mark_symbol, and is therefore in the vega spec, but `size.update` hasn't been added this way (it's unspecified in the spec).