Fix Str::contains(), startsWith() and endsWith() with empty needles.

The behavior in these cases has been unified:
- return false
- no longer produce warnings
Optimize Str::endsWith()
Docblock and code uniformization in Str class
Implements cache tags for query builder from issue #2630
Also refactors builder tests for cache
Fix docblock
Implement withErrors($validator) for views
Use original key value when updating models.

This is necessary in case the primary key was changed.

Fixes #2414.
Fix failing tests.
Add additional unit test for #2414.
Fix expectations for mock objects.
Merge pull request #2695 from franzliedke/patch-16

Use original key value when updating models.
Merge branch '4.0'
Merge pull request #2692 from jcoetzee/views_withErrors

Implement withErrors($validator) for views
Fix spacing.
Merge pull request #2687 from karptonite/builder_tags

Implements cache tags for query builder from issue #2630
Small tweaks to doc-blocks.
Change __call target.
Resolve from container again in meantime while figuring out issues.
Model cache typo fix
Merge pull request #2707 from semalead/hotfix/model-cache-typo

Model cache typo fix