Custom init patches to take configuration as a GHashTable

Currently the only way to pass custom configuration not specified in libvmi.conf is to the initialization libvmi by doing a partial init and than passing a string to the full init. Creating and parsing a string this way is highly inefficient, moreover, doesn't allow specifying if libvmi should be initialized on a domain name or a domain ID.

Custom init functions can take the regular file/string input or a GHashTable structure. The custom input structs can contain only the name|domid for partial init or the list of config parameters for full init. The way the custom input structure is defined internally in libvmi enables easy extension for alternative input sources to be added in the future.