Previously, when calling StackResource._validate_nested_resources() (which
we do whenever we create or update a nested stack), we would load the
nested stack into memory to validate the number of resources in the nested
stack, unless the max_resources_per_stack config option was set to -1. This
meant we would load the nested stack into memory in the same engine as the
parent on every update.
To reduce the memory high-water mark, fetch the information we need over
RPC from another engine instead.
To ensure this is only called once, move the call into the validate code.
(Previously it was called again in the create/update itself.)
Change-Id: I78d12ecc8240c697e26893ae2d7172b60883fb93
Partial-Bug: #1731349