Add arg-sample code

@mjhubisz

This PR addresses issue #9 by merging the code needed for `arg-sample` into master.

Also, this PR replaces #5.

Let's avoid using `exit()` when possible. Usually, the caller should decide what to do.