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. 
