Stdio.Buffer: output_to() et al now support functions.

This reduces the need for proxy objects in higher level code
using Stdio.Buffer internally.

Also adds support for subtyped objects and multiple inheritance
of Stdio.Fd et al.
Stdio.File: Pass ::write to Stdio.Buffer::output_to() et al.

This fixes infinite recursion when using Stdio.FILE with output buffers.
Removed some old compat code.