[1.8] Hide private symbols

This set of commits hide all symbols that are obviously not part of the ABI of muffin. Those symbols are determined by the fact they are neither declared by the installed header files or referenced by any binary or the GObject Introspection. As such, it is completely harmless to change their ELF visibility to hidden.

This change can marginally improve for free the compiler optimizations or the library loading. However it is minor consideration. More importantly, since few release of muffin, only private functions have been changed and actually, the muffin ABI would have been backward compatible if those private symbols were not unnecessarily exported.

I understand that muffin does not make any promise about future API stability and it is not a problem and will increase the SONAME version at hat moment. But it is beneficial to everyone to hide private symbols: it provides cleanup and and more stability of the muffin ABI interface for free.

More precisely about the commits:
 - the first 2 commits come from a pull request (#27) that has been accepted but lost in the some rebasing.  Now It was fortunate that this request #27 were lost since this current pull request would have revert some of its commits. However the 2 commits included here are necessary.
 - the third is small unrelated warning fix
 - the last three implement the changes described above