Use GLib's error reporting framework instead of error_message

GLib's GError is commonly used and it is supported by the introspection which
automatically translates it into language-native error reporting framework --
e.g. exceptions in Python.
Zero size may have some units specified

e.g. btrfs utilities sometimes return 0.00B.