Throw IllegalArgumentException for bad arguments instead of RuntimeException

`p: Process[Frank, MinorHousekeepingPullRequest]; p.once.run`: This PR uses `require` from `scala.Predef` to check the validity of arguments instead of using an `if` and `sys.error`. The advantage is that you get a more specific `IllegalArgumentException` instead of a `RuntimeException`.