ERR: Add check for iterators when creating DataFrame, fixes #5357

This is a fix for #5357, and adds a more helpful error message when trying to use an iterator as the `data` argument for a `DataFrame`. I've added the type check for iterators in the final else clause where all the valid options have already been exhausted, so it shouldn't interfere with any valid cases like passing a list of iterators.