Fix Option Validation

Resolves #349

I had moved the option validation code to happen inside `NewRequest`, but had forgotten to make it return the errors.
Oh!! I missed that. It seemed the value going into `r.options[k] = val` was getting changed. it's a really big function :(