BUG: inserting dups into blocks ok

CLN: finished duplicate item insert/delete - whoosh! (GH3679)

BUG: insert almost working

BUG: fixed insertion of dup columns!

ENH: added allow_duplicates kw to DataFrame.insert to indicate that inserting of

     a duplicate column should be allowed (default is False)
BUG: non-unique column index was failing in construction if from an ndarray

ENH: non-unique assignment now works

TST: more tests

BUG: handle multi-level columns correctly (original method)

CLN/BUG: raise exception if block ref_locs are not set when _set_ref_locs
BUG: not setting placement on reindex_with_indexers

ENH: extend index.reindex to handle non_unique indicies (rather than raising)

TST: more tests/optimizations for dup_columns