Re-write craft method

* Re-write the `computeMissingResources` method to be `craft` and refactor how
  it performs calculations to be easier to follow, and to avoid several errors
  in the prior calculation related to recipes which produce more 1 quantity of
  the output items.