Add specs around SCM config
Extract method for parsing ARGV
Use config object to separate opt parsing & setup
Group like operations in initializer
Move directory value to config, too

This value can only be read from argv.first after the option parser has done its thing; this should help make that order dependency more obvious.  Also, the default value now lives in config.