ugtrain: introduce uintptr_t handling

Calulating with (void *) for memory addresses is really cumbersome
with a lot of conversions between pointers and integers of the size
of a pointer. In order to simplify that, store all memory addresses
as uintptr_t.

The printf() and scanf() format specifiers need to be changed to
PRIxPTR and SCNxPTR. Also the limits are different with
UINTPTR_MAX. But uintptr_t is optional and may not be available.
So use unsigned long in that case unless it is 64 bit Windows.
There we need unsigned long long.

For C++ there is also the integer to C++ string conversion which
has to handle the integer in HEX correctly. So introduce the
to_xstring() function. Also cout/cerr need to be changed as "0x"
and the hex conversion are missing.
ugtrain: make objdump optional

On the MeeGo 1.2 Harmattan platform it would be overkill having
the binutils installed. SW doesn't change anymore. So we also don't
need any adaption there. The symbol lookup can be done manually on
a PC in the scratchbox environment.
common: fix uintptr_t format specifiers for C++

Before C++11 or C++0x the SCNxPTR, PRIxPTR and UINTPTR_MAX defines
may not be available from stdint.h or inttypes.h. With C++11 the
headers cstdint and cinttypes have to be included. This is a mess!
So redefine them accordingly in that case.
ugtrain: fix discovery with a loader that forks and exits

Loaders which fork and exit like 'xdg-open' are causing the game
to become an orphan and we can't use the waitpid() function for
that. So add wait_orphan() to be really sure that the game ended.
ugtrain: add PIE detection on ARM

With the armv7l in the Nokia N9 MeeGo 1.2 Harmattan smart phone the
static load address is at 0x8000. Use it to correctly detect that
this smart phone doesn't use PIE. Also clarify the comments in the
source code for this.

TODO: Read the ELF header to detect PIE in an universal way.
linuxhooking: add debug output to file possibility

There are games where we don't have any console output possibility.
So make it possible to write the debugging information to the file
"libmem_dbg.txt" in the current directory if compiled this way.
examples: chromium-bsu: do some enhancements

Add watching the score, use all commands without multilib support,
better document adaption as well as discovery, add the maintainer
and replace Gentoo with Ubuntu as the config maintainer doesn't
have Gentoo anymore.
examples: sauerbraten: do some enhancements

Use all commands without multilib support, better document adaption
as well as discovery and add the maintainer.
examples: chromium-bsu: add number of functions

In general it is not our style to use the Windows cracker notion to
show how many functions a game trainer has. But it is perhaps good
for an overview what the config is capable of and to be found this
way.
examples: sauerbraten: add number of functions

In general it is not our style to use the Windows cracker notion to
show how many functions a game trainer has. But it is perhaps good
for an overview what the config is capable of and to be found this
way.
examples: warzone2100: do some enhancements

Use all commands without multilib support, better document adaption
as well as discovery, add the maintainer and replace Gentoo with
Ubuntu as the config maintainer doesn't have Gentoo anymore.
ugtrain: introduce object number check

Use it e.g. as follows to only keep track of the first object:
checko obj u32 e 0

This helps us changing the right object in a vector.