Add Query::firstOrFail()

This method lets you use get() like behavior on any finder. This is intended to replace #5157.
I will probably change this in the future, so it does not assume th repository is a table. It will do for now :)