Update for Doxygen 1.8.7
Refactor callback insertion

Add a new function - sampgdk_array_insert_ordered() - that inserts an
element into an array according using a custom comparator.
Get rid of ugly init hack

The entries of the init.list file now consist of two parts - level
and module name. The level field controls the order of module
initialization and cleanup (dependent modules should have a greater
level than those on which they depend).

This frees us from the need to manually call sampgdk_callback_init()
in callback_register().
Call module cleanup functions in reverse order
Rewrite UFS's callback generation script
Fix cmake command in build instructions

CMakeLists.txt is one level up, not two.
Hack around tail call optimization
Fix Doxygen warnings
Add macros  hiding unused parameter in sampgdk_Unload/ProcessTick
Update code snippets in documentation
Expand anti-TCO hack on sampgdk_Load()

On Linux, gcc still had an opportunity to use TCO as PLUGIN_CALL
== SAMPGDK_CALL there.
If compiler is broken they're screwed anyway