step 1: modify buttons for new functionality.

add a boolean flag to ArrowButtons to keep track of the fact they're part
of a list, and a couple of functions to get and set them.

add a boolean flag to ImageButton to keep track of it's inverted state, and
functionality to make use of it.
step 2: dubious method for calling the previously added variable.

this is iffy, not sure if i like this.

on the plus side, it works.
step 3: cache the mouse handling setting.

we don't want to make a call to yaml_cpp every time the mouse does anything
cache it in the surface instead.
step 4: well there's your problem.

checking buttonsPressed(0) produces wacky results. let's not do that.
also, move some brackets around, and change the condition to mouse movement.
Step 5: adjust behaviour on applicable screens

omnomnom delicious copy pasta.

changes some existing behaviours to better accommodate new functionality.