Refactored the user_data struct:

Removed cb_user_data
Replaced user_data struct with a GHashTable.

Replaced all logic that used the old user data struct to use the hash table

modified unload_module to check that the module pointer is not NULL before attempting to unload it

Added call to config finalize in main

changed module load callback to call swap_module instead of load_module to properly reload an already-loaded module