Some users (TripleO specifically) want to disable features via a
count of zero, which is a problem as we always recurse and validate
the nested stack since c31c34f8df
Instead, we only do validation when the count is non-zero, to
enable, e.g default image names, to be ignored at validation
time (as we'll never use them) instead of rejected by the nested
schema (e.g the server.py properties schema which contains a
custom contraint to always validate the image).
This should still allow us to fail fast (at validation time before
creating anything) when we're actually about to create something,
e.g when the count is non-zero.
This patch also rolls in the fix for the regression this originally
caused on master, Iea454f4201990f65633b644bbefe708e5a216885.
Change-Id: I411ff41a9e0730e9864f5ed4ac54f1d5d0ec02d7
Closes-Bug: #1401929
Closes-Bug: #1404399
(cherry picked from commit 907c0aac79 and 4834443353)