Fixed before/after + date_format rules implementation

This fixes PR #3607 to provide missing features described on PR #1824 and PR #4699. Also rewrote testBeforeAndAfterWithFormat() tests.
Flagged exists as true when restoring the model
Enable array_forget to unset one or many keys
Add comment in MySQLGrammar
Fixing indentation modifyComment function
Added hasName method
Updated doc block for hasName
Update Router.php

Cleaned up method using @KennedyTedesco's suggestion.
Prevent a fatal error if Router->current is empty

Prevents a fatal error ("Call to a member function getAction() on a non-object") if currentRouteAction() is called and there is no current route.
Making the return more succinct
Use nested where for where arrays
more robust exception message
replacing test dependency on C extension with existing stub
Add keyBy method to Collection
Adding sqs unit tests to the 4.2 branch.
Database\Query\Builder::groupBy() now accepts arrays as arguments

Also added unit tests.
Abolish Model::firstByAttributes
Lowercase AS => as per laravel convention.
Add HEAD when GET is set in Route::macth()
Increment version.