Return non-zero exit code for failed run

I think because .run invokes run_file, and run_file forks,
the exit status from the fork is swallowed.

Implementing non-zero exits from .run allows for CI, etc, to
use the exit status.
Move decision to exit to executable.
Merge branch 'exit-status'
Add changelog.
Gemspec gardening.
Release.