why is_file_like needs to see  `__iter__`
I have a question regarding the new is_file_like function and its usage in IO functions like read_csv

This new change in pandas 0.20 breaks many codes which previously assume that a file-like object is just an object possessing `read` or `write` method.

Is there any specific reason we have to enforce such conditions? 

When making such changes why we have to break the previous behaviors?

