Create some QemuOpts functons

These functions will be used in next commit.

qemu_opt_get_(*)_del functions are used to make sure we
have the same behaviors as before: in block layer, after
parsing a parameter value, parameter list will delete it
to avoid parsing it twice.

Signed-off-by: Dong Xu Wang <wdongxu@linux.vnet.ibm.com>

v16->v17:
1) return "char *" instead of "const char*"

v13->v14:
1) rewrite commit message.
2) use def_value_str in qemu_opt_get_FOO_del() and qemu_opt_get_del().
3) delete redundant qemu_opt_del(opt).
Use QemuOpts support in block layer

This patch uses QemuOpts related functions in block layer, add
a member bdrv_create_opts to BlockDriver struct, it returns
a QemuOptsList pointer, which includes the image format's create
options.

And create options' primary consumer is block creating related
functions, so modify them together.

v16->v17:
1) remove const based on Patch 4/7
2) s/0/false/ in qemu_opt_get_bool_del.
3) change qed.c's logic based on Eric's comments.
4) use qemu_ prefix in rbd.c.
5) fix some alignments.

v13->v14:
1) add block/ssh.c support.
2) fix memory leak after using qemu_opt_get_del.

v12->v13:
1) split into 2 patches. one for block, one for QemuOpts funcitons.
2) fix leaking cco->opts.
3) other small fix.

v11->v12:
1) create functions, such as qemu_opt_get_del and qemu_opt_replace_set.
These functions works like origin code.
2) use QEMU_OPT_SIZE, not QEMU_OPT_NUMBER.
3) in bdrv_create, if opts is NULL, will create an empty one, so can
discard if(opts) code safely.

v10->v11:
1) qed.h move QED_DEFAULT_CLUSTER_SIZE from enum to macro, or
qemu_opts_print produce un-expanded cluster_size.
2) In qcow2.c and qcow.c, bdrv_create_file(filename, NULL), NULL ->
opts,
or while using protocol, there will be an error.

v8->v9:
1) add qemu_ prefix to gluster_create_opts.
2) fix bug: bdrv_gluster_unix and bdrv_gluster_rdma should also be
converted.

v7->v8:
1) rebase to upstream source tree.
2) add gluster.c, raw-win32.c, and rbd.c.

v6->v7:
1) use osdep.h:stringify(), not redefining new macro.
2) preserve TODO comment.
3) fix typo. BLOCK_OPT_ENCRYPT->BLOCK_OPT_STATIC.
4) initialize disk_type even when opts is NULL.

v5->v6:
1) judge if opts == NULL in block layer create functions.
2) use bdrv_create_file(filename, NULL) in qcow_create and cow_create
funtion.
3) made more readable while using qemu_opt_get_number.

Signed-off-by: Dong Xu Wang <wdongxu@linux.vnet.ibm.com>
query-command-line-options outputs def_value_str

QMP command query-command-line-options shows details information of
parameters, since added def_value_str, also output it in the QMP
command.

v16->v17:
1) add "Since 1.6" tag.
2) rename def_str_value to "default".

Signed-off-by: Dong Xu Wang <wdongxu@linux.vnet.ibm.com>
remove QEMUOptionParameter related functions and struct

Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Dong Xu Wang <wdongxu@linux.vnet.ibm.com>
make qemu_opts_del accept opts being NULL

Signed-off-by: Dong Xu Wang <wdongxu@linux.vnet.ibm.com>
use qemu_opts_del without judging NULL

Signed-off-by: Dong Xu Wang <wdongxu@linux.vnet.ibm.com>