* 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.
A pass-through recipe is one which requires an item as input which is
carried through to the output (e.g., using a Golden Railway Ticket to
create a regular Railway Ticket in Railcraft). As these aren't really
recipes, they should not be listed as such in the item detail page.
When a mod is disabled, a naïve search for the item will yield an
empty set. Instead, ignore whether a mod is disabled when looking for
the principle item for a given page.