Python support for https://github.com/pulumi/pulumi/issues/5538
This adds a `run` function that allows the python program to either be
started via the pulumi cli like normal (with the added bonus that the
inner function can be async, and we handle the event loop for the user),
or directly via python (including directly from an IDE like vscode).
Currently this breaks the use of `GetRequiredPlugins` when running via
Python. I think that's fixable with an extra flag passed to the engine,
which we could fix before or after this changeset.