Shrink memfile before releasing

Try to shrink the allocated memory of the memfile to the required size.
This can save a little memory, which is always a Good Thing (TM).
Ignore also OpenWatcom profiling report files
Just a few comments ;-)
New sprite function to get bytes per pixel (for image sprites only)
More error reporting while loading sprites
Change the meaning of the __always_inline macro

Now the macro requires the function to be explicitly marked as inline.
Satisfy ISO C requirement which forbids an empty translation unit
Add a few extra gcc warning options

With these options enabled the source must still compile without a warning...
Reorder struct members to remove padding

Padding may still be applied at the end of the structure, but at least not between members.
Fix const qualifiers on pointers

Obviously, there are places where a const pointer is cast to a non-const one
(see e.g. in rstring_{create,free}), but all other places have been updated.
Apply GCC attributes to achieve better optimization
New function to clone a sprite
Insane usage of attributes introduces bugs :-(

Add missing attributes and remove a buggy attribute. rstring_free() can and will
be called with a NULL argument, so do not optimize away the check for the NULL
pointer.
Fix typo in comment
Merge GCC attribute fix
Fulfill requirement for at least one external definition per translation unit

At least the OpenWatcom C/C++ compiler needs it in strict C89 mode.
Merge ISO C fix
Add sprite encoding function
Add support for command-line flag and warning category options

Flags can be set by '-f<flag>' or unset by '-fno-<flag>'. The '-f' short option
is available for other purposes only if no flags are to be handled (i.e. 'flags'
is NULL).

Warning options can be enabled by '-W<category>'. The '-W' short option is available
for other purposes only if 'warnopts' is NULL. If 'warnopts' is not NULL, the
'-Werror' command line option is automatically handled to treat warnings as errors.
Revise OpenWatcom C/C++ compiler flags