introduce user-defined configuration

This change introduces configuration via .json files, environment
variables, and command-line parameters.  Defaults are baked into the
config.js' module.