Refactor image types and inline sending

Instead of passing around weirdly casted *voids,
two types for images are introduced.

One is platform-independent flexible
UTOX_PNG_IMAGE struct. Its inner type
corresponds to what lodepng library accepts.

Another is platform-dependent UTOX_NATIVE_IMAGE,
that can be used to actually render it on-screen.

All functions and structures that could benefit
from it now use them. Weird casts are removed.

Another unfortunately-too-entangled-to-separate
change is avoiding copying pngdata only to
prefix it with its own size. This was done only
for outgoing inline transfers.

Resulting mutant was passed around, leading to
horrible (sometimes conditional!) "+4" magic offsets
across the whole code. And the copying code itself
was duplicated on all platforms.

Now the png array is kept untouched, accompanied
everywhere with a simple size_t argument instead.
In the only place where it's not readily possible
(tox_postmessage), a tiny struct is allocated
and passed instead. "+4" offsets are eliminated.

The end result is more clean and generic code
all around, with less magic numbers, casts,
type conversion warnings and memory copies and leaks.
Improve image vars naming a bit