Precompiler: Make the object subtype available.

For object arguments the subtype (ie inherit number) is now
made available as <name>_inh_num.

Piggy-backs on the recent format version bump.
IOBuffer: Improved support for threading in output_to().
Make compile errors in tests display the correct line.
When we know the types we can optimize pop and friends. Use that.
Since IOBuffer::_size_object now show the actual memory used a test had to be changed
Improved performance in output_to noticeably

Also, do not crash if other threads use the buffer while output_to has
been called.

It was very very intentionally not threaded. If we _need_ thread
support (say, we want to support writing to blocking files in the
background) the buffer class has to be rewritten quite a lot.

Most importantly it can not allow anyone to touch it while the other
thread is using the memory, which in turn means that it has to be
refcounted, and operations on it while refs > 1 will have to be a big
no-no, or copy all data.

It is rather hard to use the buffer if it behaves like that, mainly
when it is used as an output buffer for a file (it is assumed that the
add functions are called to add output then, and if the writing is
done in a thread it will be likely to cause issues)

Hence the total lack of THREADS_ALLOW in the buffer object. The
alternative is to locking to all buffer functions.

Or, I guess, we could just leave it as is and hope nobody does
antything "mean".

Alternatively, use the kernel async_write code on linux, that would
make output_to nonblocking even for blocking files on that platform,
and hopefully the memory will be copied when the system call returns,
and it is thus safe to change it.

The main issue with output_to + write + threads is that the threads
are enabled before the system call has copied the data, and you will
thus get a spurious error if the buffer is reallocated in another
thread.
Workaround for precompiler issue in IOBuffer.

The precompiler generates invalid code and fails to compile
when PRECOMPILE_API_VERSION < 5. Generated code ends up inside
the #ifdef-clause.
Unused local variable.
Use Stdio.IOBuffer instead of ADT.struct
We apparently don't need the end_decode_constructed callback.