Merge pull request #3635 from jreback/iloc_mask

API: Raise on iloc indexing with a non-integer based boolean mask (GH3631)
ENH: to_csv write multi-index columns similar to how they are displayed in to_string
ENH: Allow read_csv to handle multi-index in columns

     GH3571, GH1651, GH3141
TST: more test cases

ENH: catching some invalid option combinations

BUG: fix as_recarray

DOC: io.rst updated
ENH/CLN: refactor to support PythonParser as well as CParser
BUG: unnamed columns in a multi-index will be named like: Unamed 2_level_0, so they are not duplicated

ENH: add options ``multi_index_columns_compat`` both to to_csv and read_csv (default is False),

    to force (when True) the previous behavior of creating a list of tuples (when writing), and
    reading as a list of tuples (and NOT as a MultiIndex)

DOC: add compat flags to io.rst
DOC: updated releasenotes, v0.11.1 whatsnew, io.rst

CLN: changed formatting option: multi_index_columns_compat -> tupleize_cols

BUG: incorrectly writing sparse levels for the multi_index

DOC: slight docs changes

TST: added tests/fixes for dissallowed options in to_csv (cols=not None,index=False)

TST: from_csv not accepting tupleize_cols

ENH: allow index=False in to_csv with a multi_index column

     allow reading of a multi_index column with with index_col=None

DOC: updates to examples in io.rst and v0.11.1.rst

TST: disallow names, usecols, non-numeric in index_cols

BUG: raise on too many rows in the header if multi_index of columns
TST: test for tupleize_cols=True,index=False

TST: better error messages on multi_index column read failure