Support cross-compilation for Windows with mingw32

To compile with mingw32 under Linux:

sudo apt-get install mingw32
cmake -DCMAKE_TOOLCHAIN_FILE=cmake/Toolchain-i586-mingw32msvc.cmake ...
Null-terminate array returned by GetNatives()

This way you don't have to supply the "number" parameter to
GetNatives() if you simply want to iterate over the natives.
Fix InvokeNativeArray() not being exported

Can't describe how I hate forgetting to update these stupid .api
files. I really need to do something with them.
Clean whitespace
Update documentation on GetNatives()
Note about '...' arguments in variadic functions
Rewrite sampgdk_plugin_get_handle() using GetModuleHandleEx()
Add optional plugin handle parameter

Fixes #83.
Limit code to 80 columns in helloworld
Revert "Add optional plugin handle parameter"

This reverts commit 93ad6f1f518cfcbd8822788970dcd7ee3e37e592.
Less ugly line breaks
Small documentation fixes
NULL -> 0
Fix MSVC warning

..\..\src\internal\native.c(172): warning C4244: '=' : conversion from 'double' to 'float', possible loss of data
Disable [tail call] optimization with #pragma

Use vendor-specific compiler directives to disable tail-call
optimization instead of the hidden extra argument hack. This is both
more reliable and less ugly.

Supported compilers: MSVC, GCC (clang is not supported)
Implement amalgamation build

Amalgamation build consists of two files: "sampgdk.h" and "sampgdk.c".
In order to use them one has to define SAMPGDK_AMALGAMATION and
add both files to his/her project.

At this point there remains a dependency on subhook, i.e. you can't
use amalgamation without it. Hopefully I'll fix this in future.
Add build option to turn on/off amalgamation build

The new option is called SAMPGDK_BUILD_AMALGAMATION.
Fix Linux build
Move platform definitions to CMake files

This fixes an error on Linux where the compiler couldn't find the
definition of Dl_info despite dlfcn.h being included.
Forgot to rename some stuff