Use slab_free() in error path

One free() in a error path in read_source() was forgotton to be converted to
a slab_free().
Add unified stream interface

The new stream interface was designed mainly to wrap two kinds of streams
behind a common interface: FILE and in-memory strings.

Because the P compiler is a set of libraries which may or may not be
independent executables, we could find ourselves implementing everything on
top of FILE and then struggling with getting internal memory through FILEs
when we have all the libraries linked together. Or, OTOH, to copy file to
memory first before we can use them in the interface built on top of byte
strings.

No, no. We can now use both transparently.

As a higher-level layer, we got a small pipe interface on top of streams.
Pipes, as usual, connect two streams. I think these pipes are pretty cool.
Look at the streamtest.c.

(I must admit - as difficult as it is for me :-) - that I did a pretty good
job today. This whole interface was designed and implemented on a single day
and runs flawlessly: correct and without memory leaks or other problems.)