switch-host-gcc.sh: make the code more generic

... so that we do not need to patch it per release
common.cmake: use hidden visibility by default

... in order to prevent hard-to-debug interferences between shared
libraries when multiple CL-based GCC plug-ins are loaded by a single
GCC instance.

Previously, the compile-self-02-var-killer test, which sets the
MALLOC_PERTURB_ environment variable, printed some binary garbage in
diagnostic messages.  The cause was that plugin_init() from libsl.so
incorrectly called cl_global_init() from libcl_smoke_test.so, which
initialized the message printing callbacks to share the handlers by both
plug-ins.  Consequently, after the call of free_plugin_name() from
libcl_smoke_test.so, libsl.so kept using the already freed plug-in base
name in diagnostic messages.
storage: provide topologically-sorted list of functions

... and make cl/pointsto_fics.cc use it
fwnull: do not rely on fnc UIDs ordering

They seem to be assigned in the inverted order with gcc-4.8.x.
Merge remote-tracking branch 'predator/master'
fa/compiler: eliminate an unnecessary warning with gcc 4.8.0

In file included from fa/compiler.cc:46:0:
fa/microcode.hh: In member function ‘bool Compiler::Core::cStoreOperand(const cl_operand&, size_t, size_t, const CodeStorage::Insn&)’:
fa/microcode.hh:598:66: warning: ‘offset’ may be used uninitialized in this function [-Wmaybe-uninitialized]
   : SequentialInstruction(insn), dst_(dst), src_(src), base_(base)
                                                                  ^
fa/compiler.cc:1084:10: note: ‘offset’ was declared here
      int offset;
          ^