Load smart-tabs-mode immediately
Set mode's compile command after file-local variables

This commit introduces a new mechanism for setting the compilation,
running and cleaning commands for a major mode. Instead of setting them
in the mode hook, modes should now add the function setting them to
`compile-run-clean-command-setter-alist`.

This function will be run after file-local variables receive their
values.

Such a method is necessary if the commands depend on file-local
variables, because the mode hook is run before file-local variables are
put into effect.
Use the new method for setting C and C++ compile command