BUG: Various inconsistencies in DataFrame __getitem__ and __setitem__ behavior (fixes #2765)

see #2765

Note, to address " *\_\_getitem\_\_* does not reindex boolean Series key but *\_\_setitem\_\_* does ", I have changed the *\_\_getitem\_\_* behavior rather than the *\_\_setitem\_\_* behavior because it is more consistent with other indexing behavior and does not break any tests...just in case, I have inserted a warning about this happening (which only triggers when a reindex is actually required)