Put your light dependent resistor as shown here. 3V3 ----- Resistor --+-- Capacitor ----- Ground | +-- GPIO Perhaps start from low value capacitors and work up until you find a suitable value. Example code at http://abyz.me.uk/rpi/pigpio/examples.html#Python_pot_cap_py
This just highlights many points familiar to anyone who has ever tried to write documentation. Many won't read it in the first place and of those that do some will find the most perverse interpretation of your words.
All the GPIO on the expansion header can generate an interrupt on level change. So as long as your input to GPIO 4 causes it to change from detecting 3V3 to detecting ground (or vice versa) it will work.
I have no way of testing at the moment (no access to a Pi). I guess networking will be the bottleneck. I'd try to generate level changes at the Pi with PWM and monitor them on your laptop with piscope. When piscope starts obviously missing level changes that is probably saturation point as far as th...
An external power supply is recommended. A servo under load can easily draw a couple of amps at 5V which is more than a Pi can supply. However I often use one or more 9g servos directly powered from the Pi.
The problem is because you have no pull ups to 3V3 connected to your new I2C buses. You could set the internal pull-ups on those GPIO but they are too weak to be reliable. Try something like 4k7 external pulls to 3V3.