String padding

> Two string values are also acceptable: "auto" (the default) and "strict".
> Auto-padding computes the padding dynamically based on the contents of the visualization. All marks, including axes and legends, are used to compute the necessary padding.
> "Strict" auto-padding attempts to adjust the padding such that the overall width and height of the visualization is unchanged.

The `@grammar((int, dict,) + str_types)` already allowed str_types but the code do not. This pr add support for it.

And I also changed default padding to `auto`, which I think makes more sense for a default value.