Run all the tests inside valgrind

Now I can kind of make sure that there are no memory leaks (though I
should figure out how to make Valgrind actually fail the tests...).
Implement "edge_input", which provides inputs to the edge tiles

The general idea here is that I want to simulate a Hurricane array
with some inputs attached so I can make sure it produces the correct
answer.  I've decided to do this by using a very similar mechanism to
how I do tiles: the passes in a class that implements some interface
which is then run in a thread to produce these inputs.

I'm not sure if this is the best approach (it won't allow us to do
something like benchmark the Hurricane RTL with correct input
timings), but it's what is going to happen for now...