Add support for automatic coroutine-based wrappers for async operations

Instead of writing

obj:do_async(..., coroutine.running())
res = obj.do_finish(coroutine.yield())

it is possible to write simple

res = obj:async_do(...)
Small tweaks to markupthrough.lua sample
Fix callback as coroutine invocation

In some cases, we were presented with strange 'thread' object on the
stack which was consumed by lua_resume() call.  This object confused
lgi's closure callback stack handling.
Add a few helper overrides for GLib.Bytes

This also leads to deprecation of 'bytes' modifiable buffer, because
it is no longer needed, the only important user of this strange
extension was GInputStream() and GLib grew version of reading using
GBytes.

So remove marshialling of uint8 arrays into bytes, marshal them to Lua
strings instead, and remove doc chapter documenting modifiable buffers
extension.
Modernize giostream.lua sample

Use async_do syntax and _bytes_ variant of stream APIs. Feels much
better now :-)
Avoid tonumber() when testing Gtk version.

When Lua ends up configured to use NLS while parsing numbers, using
tonumber() on repository versions might fail.  Although this is just
workaround, it apparently might help to some users, so avoid using
tonumber() in this case.