Fix for https://github.com/laravel/framework/issues/2404

The implementation of compileInsert in SQLiteGrammar uses
array_keys($values[0]) to build column names. It should use
reset($values) like in the default implementation.
Fix for SQLiteGrammar
Added parameter  in Factory and Validator to use the Validator::make()
Renaming Section.php file
Renaming in a separate commit to retain git history
Cache tags feature
Changes cache Sections to Tags, and allows multiple tags per cache.
Make TaggedCache implement StoreInterface
This way, a tagged cache can be passed to a class that expects a StoreInterface, and doesn't have to know that it is dealing with a tagged cache.
Tag-related operations can be handled outside the class.
Fix unioning more than 1 query
Merge pull request #2559 from maddhatter/fix-multi-unions

[4.0] Fix unioning more than 1 query
Merge branch '4.0'
Use refreshRequest.
Change the name of the Tags class to TagSet
Fix typos.
Added whereNotBetween support.
Add support for order by and limit on MySQL update queries.
Bind container into itself.
Added App::middleware method to inject middlewares onto Stack.
Cast wheres to array.
Merge branch '4.0'
A new packages directory within `lang` can now override package language files.
Added new 'Auth::viaRemember method to determine if user was authed via 'remember me' cookie.