Add public clients option to ROPC. Closes #21.

See also #20.

@ebymatthew, please review and let me know if this works for you. I don't call `validateClient` this way, which seems better, and I avoid having a boolean flag that affects the hook behavior.

The readme and the integration test/example server are probably the most relevant things to review.

If this meets your use case I'll push out a 4.1.0 with it shortly.