Allow passing in arbitrary transformations

This patch allows the `transform` keyword argument to `context`, which you can use to pass in a Transform object.

It gets applied to the diagram before rotation is applied.