Allow specifying external providers in a TestCase.
Allow specifying external providers in a TestCase.

Users used to specify third-party providers they relied on for
tests--usually utility providers like random--by importing the provider
and specifying it in resource.TestCase.Providers or
resource.TestCase.ProviderFactories. With binary testing, this is no
longer necessary, as the providers can be downloaded from the registry
using Terraform init. This allows for more up-to-date providers with
fewer Go dependencies, which is a nicer system all around.

The acceptance testing framework will run `terraform init`, which will
automatically notice these providers being used in the configuration
files and download them, just like in production.

However, there's a wrinkle; tests that import don't have the resources
set in the configuration, which means they're not downloaded during
init, which causes test failures.

To resolve this, this PR adds a new property to TestCase, which lets
developers list the third party providers their test relies on. This
list is then added to the list of provider blocks auto-generated by the
test framework, allowing them to be inited during import tests.

Arguably, we should have this new property take a map of blocks to
either their version, their source block, or both, so users can control
specifically which version of the provider they're using and where it's
downloaded from. I'm open to thoughts and opinions on that.

hashicorp/terraform-plugin-sdk,hashicorp/terraform-plugin-sdk