ENH: Add usecols option to python parser.
Closes #4335

This ticket felt a little bit like whack-a-mole. 

The key is that names can have two meanings: if it matches length of usecols then it is the name to apply to the (numeric) usecols. If it matches the length of the original columns, it is the set of column names and string values in usecols refer to it. 

pls also add a release notes entry and update io.rst docs (e.g. the default for the header is now slightly different as you changed in the doc string?)
 for py3, use `compat.string_types` instead of `basestring` (you may also need to import it)
 I added release notes. @jreback do we have to update the io.rst docs manually or is that generated? 

FWIW my docstring update reflects pre-existing behaviour. I just made it explicit.
 @guyrt you can edit io.rst (or any other doc file) just like code....edit and it will be included in the commit
the docs themselves are generated from that...(which you can build to look at locally if you would like).
 can you rebase and squash?
 Looks like I goofed on the rebase.

edit: fixed
 merge this? (as its separate from #5156) ?
 This one is ready to merge. #5156 will be a separate PR
