line cap and dimensions bindings

This instance doesn't follow the "implicit contract" of `Show` that `show x` should evaluate to `x` in the REPL. Can we split this into a `Show` instance and another function to render a `LineCap` for use in `setLineCap`?