[GC preps] define CATEGORY_INIT macro to allow initialization/deinitialization of categories. Replace hard coded call to modules_uninit with this mechanism
[GC preps] simplify GPIO watch code by not storing resource ID in work structure
[GC preps] store watch data in watch object instead of in structure. This will allow traversal of these properties at GC