Fix a bug in the crafting plan where it would determine the number of
repetitions of the recipe only based upon the primary output even
when the recipe was needed only for a secondary output (e.g., when a
recipe calls for Creosote Oil, which is only produced as a secondary
output).
* Create the SlotController and refactor it into the various places
where a crafting grid or crafting output is displayed
* Update the Recipe model to allow each "input" stack to retain the
count indicated in the data file. This required changing how a few
other classes interact with it in order for them to get the full
stack back again for each input (instead of just getting the item
slug)
* Update the ModVersionParser to allow for full stacks to be given
as input and refactored common code out for handling input/output/
tools stacks
1. All tests have been converted into regular command-line mocha
tests (instead of running in the browser), and the deployment
script has been changed to automatically fail any `--new`
deployment which doesn't pass.
2. Several small class (e.g., `Logger`) have been moved into a common
module, `crafting-guide-common` so that they may be shared between
the client and server.
Any link inside a item detail page's markdown description which does
not have a URL will be assumed to be the name of an item covered by
Crafting Guide and an URL will be added to reference the appropiate
browse page.
When a here-doc contains an empty line, any whitespace it contains
should be ignored for purposes of determining the amount of leading
whitespace to trim from each line.