Refactor hooks and window handling

Use GeminiHook allowing easy hooking/unhooking

Store references to windows to avoid nested FindChild chains

Hide the original Dye List window instead of removing it so we can easily
restore it.

Don't wipe our enclosing windows except when unhooking.

Add /tiedye to toggle TieDye