Fix and cleanup environment variables in elements for GCC.

There were a lot of confusions on what variables should be used to
compile GCC. This ended up with "host" tools not being compiled with
the proper flags. See #784.

"Build" is for tools built as intermediate that needs to run during
the build.  For example source code generators. Environment variables
for those are suffixed with `_FOR_BUILD`. For example `CC_FOR_BUILD`,
`CLFAGS_FOR_BUILD`.

"Host" is for the compiler itself as well as all its development
tools. Default environment variables are used for those, e.g. `CC`,
`CFLAGS`.

"Target" are the runtime and libraries that needs to be linked to the
result of compilation with the new built compiler. This is for example
`libgcc`, `libstdc++`, and runtime objects (`crt*.o`). Environment
variables for those are suffixed with `_FOR_TARGET`. For example
`CC_FOR_TARGET`, `CLFAGS_FOR_TARGET`.

When building a cross-compiler, `build == host`. We need to set `CC`,
`CXX`, `CFLAGS`, `CXXFLAGS`, `LDFLAGS`, etc. for the build/host
architecture.  Then we set `CC_FOR_TARGET`, `CFLAGS_FOR_TARGET`,
etc. for the target architecture.

When cross-compiling the final compiler, `host == target`. In that
case, `CC`, `CFLAGS`, etc. ar set to the host/target architecture. We
then need to set `CC_FOR_BUILD`, `CFLAGS_FOR_BUILD`, etc. for the
build architecture.

When we do not cross-compile, that is `build == host && host ==
target`, we should still use the right compiler otherwise we end-up
link to the wrong library. By default GCC's configure ignore
`*_FOR_BUILD` tool variables in this case. We patch it to not ignore
it, because build and host really need to use different compilers.

For `libstc++-stage1.bst`, is a subdirectory of gcc. It is a intended
for the "target", the default flags should be the one for the target.
It does not have any "build" tool so it does not need `*_FOR_BUILD`
variables.
10 jobs for valentindavid/gcc-flags in 574 minutes and 20 seconds
Status Job ID Name Coverage
  Flatpak
passed #231759459
aarch64
app_aarch64

09:31:23

passed #231759460
armhf
app_arm

00:29:44

passed #231759458
cache_i686 x86_64
app_i686

00:30:56

passed #231766221
cache_x86_64 x86_64
app_x86_64

02:58:51

failed #231763460
x86_64 cache_x86_64
app_x86_64

00:02:02

failed #231759457
cache_x86_64 x86_64
app_x86_64

00:02:09

 
  Vm
manual #231759463
aarch64 allowed to fail manual
minimal_systemd_vm_aarch64
passed #231759464
armhf
minimal_systemd_vm_arm

00:02:57

passed #231759462
cache_i686 x86_64
minimal_systemd_vm_i686

00:01:47

passed #231759461
cache_x86_64 x86_64
minimal_systemd_vm_x86_64

00:01:44