gpio.py: make executable
GPI: add edge triggering
GPIO: throw for invalid argument
GPIO: use unnamed tmp variable