refactor: remove need to call super.run()

Move the code from Element::run() to Element::run_or_block(), so it is
already executed before calling self.run(). With that change, I don't
have to call super(...).run() anymore in each run() function.
test: control signal invalid prevents execution
refactor: remove generic arguments in assertEqual