Add simple test runner
Port over async/poll/signal modules