Add project abstraction

The Project encapsulates the package.json and metadata about it, such as
file and directory paths.
Add wrapper for CLI methods
Add info command for dumping gathered details
Provide all CLI arguments to cli methods
Clean up Project and add tests
Add version command with inc subcommand

Takes BUILD_NUMBER and GIT_COMMIT into account when incrementing the
version.

If the BUILD_NUMBER environment variable is set, the pre-release number
will be set to MAX(BUILD_NUMBER, current+1). This ensures that the
number is higher than the previous release by the same mechanism.

1.2.3 => 1.2.4-0
1.2.3-4 => 1.2.3-5
BUILD_NUMBER=42, 1.2.3-4 => 1.2.3-42

If GIT_COMMIT is set, it is abbreviated and appended to teh prerelease
version. If the prerelease already has multiple components, all but the
head are replaced with a single commit component.

GIT_COMMIT=fd6282, 1.2.3 => 1.2.4-0.fd6282
GIT_COMMIT=fd6282, 1.2.3-4.5.6 => 1.2.3-5.fd6282
BUILD_NUMBER=42, GIT_COMMIT=fd6282, 1.2.3-4.5.6 => 1.2.3-42.fd6282
test: allow environment injection

CI actually sets GIT_COMMIT and BUILD_NUMBER, so they foul up the tests.
Fix BUILD_NUMBER/GIT_COMMIT injection

Bubble use of global state out of inc() and use actual values in tests.
Add slt-changelog command

Hey, you got Ruby in my JavaScript\!
Add slt-stage command

Publishes to registry using MAX(v.local, v.registry)+0.0.1
Add --summary option to slt-changelog

Prints to stdout the list of changes ince the previous release
Change slt-changelog --unreleased to --version VERSION

To generate a changelog for an unreleased version, possibly during the release process
1.1.0