goptions: use glib n-ary tree for option dependencies

We didn't support looking up children of children before, since
it would just be too costly (making the whole 'visible' thing
be N!). Move to a glib n-ary tree for option dependencies, this
is a lot cleaner and faster.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
diff --git a/options.h b/options.h
index b66b6e7..ae51cb3 100644
--- a/options.h
+++ b/options.h
@@ -111,5 +111,6 @@
 
 extern struct opt_group *opt_group_from_mask(unsigned int *mask);
 extern struct opt_group *opt_group_cat_from_mask(unsigned int *mask);
+extern struct fio_option *fio_option_find(const char *name);
 
 #endif