Unpack some layers of abstraction to combine processing of plugin {} and buildscript {} into one place at script transform time.

A pending change will require this.
Don't allow anything except buildscript {} and plugins {} blocks before plugin {} blocks.

This is a compile error. The error points to the plugin {} call that has the other statements before it. It would be possible to error on everything before the block (which is the real problem), but this would involve collecting all statements as the transform sees them which may incur some overhead during compile.