Protect pointers that are assumed to never be NULL

In debug builds without optimization pointer arguments that are marked to be non-null
are checked for really being non-null. If optimizations are enabled the checks are
removed by the dead-code-elimination step, because the pointers are assumed to be
non-null.
Revert "Change the meaning of the __always_inline macro"

This reverts commit 20782565638fcbe98eafbdf90734b4629ca0dff0.

Reason: In the header we state that all macros are used with the same semantics glibc
uses them. Now this sentence is true again.
Improve compiler feature detection

Most importantly, the 'inline' keyword is always available in C99 mode.
Fix detection whether the C compiler supports __func__
Missed one file
Workaround for stddef.h conflicting with stdint.h in strict C89 mode of the OpenWatcom C compiler
Merge ISO C fix
Fix possible memory leaks
Fix changing the sprite on error

If the function fails the sprite should not be changed at all.
Add architecture-specific memory move (copy) functions

They behave the same as the corresponding peek/poke functions, but on
architectures that don't support reading/writing aligned data at arbitrary
memory locations they behave better (smaller, faster code).

Also a preprocessor #define exported to let other parts of the program select
specific optimizations available only on architectures without strict memory
alignment rules.
Add safe declaration specifier for only-inline functions and a macro to test which inlining semantics the compiler will use
Merge inlining support fix
Fix cross-inclusion in file.h/memfile.h

Now only the needed parts are included, thus you won't get the memfile functions
unless you include memfile.h, and vica versa.
OpenWatcom C/C++ compiler flags update

Omit check for stack overflow if not in debug mode (DEBUG=no, default).
Provide inline versions of the simplest memfile functions
Add a double-linked list implementation

The implementation follows the naming conventions of std::list<>, and also the
parameters as close as possible.

This should make handling double-linked lists in C an easy task.
Protect from C++ name mangling

Actually it isn't really necessary, since all functions are 'static inline'.
Add distinct types for the list and list item

Also introduce a list iterator with the accompanying functions to move it.
Fix warning that 'vstart' might be used uninitialized
Merge common library improvements