Implemented IronFurnace

Why `exit_stack`? This is the middleware stack, could we call it `mid_stack`, or `cur_stack`, or `active_stack` to differentiate it from `self.stack`? We could even name it `stack`, although that seems confusing.