Add Query::firstOrFail()

This method lets you use get() like behavior on any finder. This is
intended to replace #5157.
Simplify error message and test.
Move RecordNotFoundException to Datasource.

Also move findOrFail() into QueryTrait so it can be used in other
queryable implementations.
Fix PHPCS errors.
Merge pull request #5305 from cakephp/orm-findorfail

Add Query::firstOrFail()