Gate output trigger fix

Gates should now update properly by evaluating each of a gate's children before it's children's children. Strangely the iterator was being created but not passed in the function, so it wasn't fulfilling its purpose, but everything was setup for this.