Write sprite name and number into the sprite data structure

Thus I won't have to pass paths and sprite numbers all around for every function,
which are most likely only used for debug messages.
Add image decoding function implementation

Tile sprites have a special encoding, skipping transparent pixels.
Reference counted strings

Reduce memory footprint and number of memory allocations by using reference counted
strings where the same string is used multiple times.

The implementation behaves extremely bad if a huge number of reference counted strings
are used, but I only plan to use a few... ;-)
Fix possible memleaks
Always set the sprite type

In case of failure in loading the sprite, the switch statement in the sprite_destroy()
function may depend on an uninitialized value, and thus may try to free unallocated
memory, burn your house, kill your dog, etc...