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.
This fixes a regression where recipes for vanilla Minecraft items
(e.g., Iron Ingot) added by mods (e.g., Pulverized Iron to Iron
Ingot) didn't show up on that item's detail page.
When a visitor arrives at the site for the first time, this will
ensure they have a certain set of mods on/off. Right now, that means
IC2-Classic is off by default, and everything else is on.