When the topmost stack configuration declares an ephemeral input variable,
its values must be provided separately for each of the plan and apply
phases.
Therefore here we extend the API to allow specifying input variable values
during the apply phase, and add rules to check whether all of the
apply-time-required input variables have been specified and whether any
non-ephemeral variables are either unspecified or re-specified with equal
values during the apply phase.
This also extends the FindStackConfigurationComponents response to include
more metadata about the input variables and output values so that a caller
can know which ones are ephemeral. The name of that RPC function had
already become a little too specific with the inclusion of embedded stack
information and is even moreso now; we might choose to rename it to
something more generic like "AnalyzeStackConfiguration" in future, but
that'd be a breaking change and therefore requires more coordination.
This function returns a summary of the components and embedded stacks
declared inside a given stack configuration. This reports only on static
information that doesn't require any dynamic evaluation or provider plugin
execution, so it should be sufficient to build a skeleton of the UI
representing the content of a configuration that can then be populated
with dynamic information in later steps, to make the UI feel responsive.