Simple (slow!) instruction synthesis + pass support

I think the interesting part of this patch is the getValue() function in the Pass
For some reason I thought we might be able to see arbitrary expressions here, but I now agree that this should be a hard failure.