Introduce proper error handling in several places, and perform a first pass at refactoring Instance to make it easier to use.
This uses a build.rs file to collect all the wast tests and create individual `#[test]` lines for them, so that `cargo test` can run them in parallel.