CLN: clean up parser options
Also add a test to make sure that the C parser options validation is actually 
covered

example travis fail:

https://travis-ci.org/pydata/pandas/jobs/12171563

explanation (for the record):

if you print out `options` before this commit you'll see that they are all overwritten with a single value. Whatever this value is will depend on how the `_parser_defaults` dictionary happens to be ordered (which is random because of hashing). 

This caused a bug because the value of `value` is retained from the loop over `_parser_defaults`, and `default` is _not_ reassigned in the two loops that follow the loop over `_parser_defaults`, so all the values end up being the same as the last argument that was iterated over from `_parser_defaults`.

magic explained :tada: 

Great work catching this! :+1: 
 i'm not sure about this factorize argument ... now that i think about it i think it hsould be removed from the signature and set of arguments that are incompatible with the python parser
 @jreback @jtratner comments?
 seems fine, any idea what factorize does?
 nothing. wasn't used anywhere in `parser.pyx` except to be assigned as an instance variable never to be used again
 looks like it was added as an option in c4d36ca5681892e506d58125ba394caf2135d5ad and has just been floating around since then doing nothing
