audtag C++ refactoring v2

This is the same idea as v1 with less intrusive changes (no reindent).  The builtin types are moved to `libaudtag/builtin.h`, where the type substrate is kept, we then register the builtin types the first time `find_tag_module()` is called.

The eventual goal is to expose the type modules to plugin-land, so that our tag handling is provided by plugins.

I have for the moment left `tag_update_stream_metadata()` alone, I feel that libaudtag is not the correct location for that function as it has nothing to do with tags (but instead filling tuples based on learned information from the VFS layer), I think it should be moved into the VFS layer.

There is no specific pull request for audacious-plugins, just revert git commit 6d9a8fbe7027 as the same public API changes are made.

This was tested on OS X using clang++ and Alpine 3.1 edge using gcc 4.8.