Fix a couple of minor bugs that can cause NaN values

I was having trouble running this against my recipe (http://diy.soylent.me/recipes/oats-whey-n-maltodextrin/json?nutrientProfile=5330c6e624b6250200777ec5) - didn't look too deeply but it seems `generateRecipe` was iterating over non-nutrient keys, causing `NaN` values to propagate.

The last change is needed when the algorithm decides to use "0" of an ingredient, otherwise everything ends up `NaN`.