Logic branch listener

It observes the states of multiple es at once, allowing for more complex logic setups. When the state of a  changes, it will automatically tell  s which are watching it to fire outputs.