[5.0] Defer Query Builder Bindings Intil The Query Is Being Compiled

The old design of adding bindings as clauses are added to the query worked most of the time had two major issues:
 1. For some complex queries, like unions or sub queries involving joins, the bindings fail to apply or are applied in the wrong order. See #5833 for examples.
 1. Cleanly removing global scopes that introduced bindings is impossible to guarantee, especially if other global scopes are in use.

To fix this we take a very simple approach to defer assigning the query bindings until the query is being compiled. This has two effects:
 1. Query bindings are guaranteed to be added in the same order that the sql string is concatenated.
 1. When removing global scopes you don't need to worry about removing bindings. Just remove the appropriate query clauses and the bindings will be taken care of at compile time.



There is logic behind most code style rules. You can't really expect people to feel like @taylorotwell, because they are not Taylor and they never be. That's why automation is key to saving human time for something valuable. I can't believe that you better prefer watching the correct space placement on every PR instead of creating your own PR's :smile: 

However maybe it's your work to do so, I don't know. Then I can't really take your work from you by automating code style validation process.