There were a load of warnings such as the below, when building the
protobufs:
```
warning: Import google/protobuf/empty.proto is unused.
```
This removes the unused imports.
Enabling fix for https://github.com/pulumi/pulumi-terraform-bridge/issues/1130
This adds two new bits of logic to the plugin mapper.
Firstly when getting a mapping request for a given package X, as well as
searching to see if we have an X plugin already installed to call it's
`GetMapping` method first, we now also try to install X if we don't
already have it. The install failing is not considered an error, we'll
just try the other plugins to see if they map and then possibly return
empty (as before).
Secondly the converter can pass a hint to what the pulumi plugin for the
ecosystem plugin is. If no hint is given we assume the pulumi plugin
name is the same as the ecosystem name. But this can be used for example
in the terraform converter to tell the engine that for example the
terraform provider "azurerm" is called "azure" in pulumi.
The hint is just a hint, if the name doesn't match all the other plugins
will be searched as before.
This changes codegen to be invoked via gRPC from pkg, rather than
invoking pkg/codegen directly.
Consider it a proof-of-concept for moving codegen to a gRPC interface
without the worries of forwards-backwards compatability (because we ship
language plugins at a fixed version side-by-side to users).