Don't assign build properties as target's usage requirements when it fails to generate.
We try to avoid building the same target twice, by caching the result of previous calls to target.generate, and returning it if a build request with the same property set is made. When the target fails to generate, for example due to <build>no property, we used to store the entire build property set as the usage requirements of the build. This is clearly, wrong, this patch makes us store <build>no as usage requirements instead.