ugtrain: report memory attach error only once

When ending the game there is a period in time in which the memory
attaching already fails but the game process is still there. It is
annoying to see the same error message multiple times. So show it
only once.
linuxhooking: remove PIE support again

When thinking about PIC support as well, then the libraries are
getting too complex. They shouldn't know about PIC or PIE and
should just get the code offset through the input FIFO to adapt
their configs.
ugtrain: introduce memory maps handling

Doing text search in /proc/$pid/maps isn't the best method when
thinking about PIC and PIE. So parse it the same way as scanmem
does it. Send the code offset synchronized to libmemdisc and
libmemhack as well to implement PIE support again. The libraries
only adapt their configs to PIE.
Ugtrain converts the addresses back to the addresses within the
executable.
libmemdisc: enhance output buffer filling

From time to time there is an error when parsing memhack_file. The
guess is that the buffer is too small and incomplete messages are
sent through the fifo. So use snprintf() instead of sprintf() and
check for termination before sending out data.
ugtrain: check if tools are available