Compile ucode*.cpp as C source code

The ucodes are basically only C code and don't use C++ features. It is
therefore not necessary to build it with a C++ compiler.
Don't mix declaration and code

C90 only supports variable declaration at the beginning of a scope. Not doing
so will break builds in MSVC.
Fix function declaration for functions without parameter
Add missing includes for global declaration
Mark only locally used symbols as static
Move all extern definitions to the header files
Move shared MP3 symbol definition to header
Always use standard ISO C99 datatypes for sized variables
Only include what each source file needs
Remove dead assignments
Remove unused extern declarations
Remove code which only exist as comment
Replace C++ comments with C comments
Fix wrong code alignment on linestart
Move longer comments to separate line before the code
Cleanup oneline if statements
Use clamp_s16 to clamp values to int16_t range
Implement SFX stage for musyx ucode.

With this patch, delay-based effects should work.
Basically, the SFX stage mixes up to 8 delayed subframes together and add the
resulting subframe to left and right subframes. Furthermore, a filtered version
of this subframe is used to update the sample history.

Games that use the SFX stage include:
The World is not Enough, Tarzan, Resident Evil 2, Polaris SnowCross

Musyx ucode implementation should now be complete !
Merge pull request #3 from ecsv/nocpp

Add additional cleanup changes
Merge pull request #4 from ecsv/musyx

Implement SFX stage for musyx ucode (on nocpp branch)