Fixed potential problem with IndexError in QuerySet.first()

The current implementation may suppress internal IndexError exceptions.

Please see ticket 23555 for more details. https://code.djangoproject.com/ticket/23555#ticket
The problem is that you can't be sure the inner code (that one in `__getitem__()`) will never fail with IndexError. I've got a problem with such error handling early. That was hard enough to find the cause of problem, and the outhor was agree that the way he handles error there is not good. Let's don't repeat this mistake again :) I think people should never think their code will never fail. So the error should never be suppressed unless we are sure it can not be produced inside of called functions. Remember The Zen of Python says "Errors should never pass silently." It is better to have a little more complicated code than bugs.