Add Query::firstOrFail()

This method lets you use get() like behavior on any finder. This is intended to replace #5157.
I would remove the 'for conditions ...' part, it is starting to look complicated and the output is not very useful anyway.