Make withPrompts, withArguments, withOptions chainable

Close #631 
You can make this one way simpler this way:

`assert.throws(this.ctx.withArguments.bind(this.ctx, { foo: 'bar' }))`

I wouldn't check for the error message as it could change and I usually prefer my test to be flexible towards small changes.