Add support for examples and external tests

This add support for `examples/*.rs` being built (as normal bin crates) during `cargo test`,
and `src/test.rs` and `tests/*.rs` being built and run (as test crates) during `cargo test`.
Why is the error being ignored? FWIW, I think these chains would be better as

```rust
match fs::readdir(...) {
    Err(_) => {/* do nothing if the directory doesn't exist, etc.*/}
    Ok(files) => {
        tests.extend(v.move_iter().filter(|f| f.extension_str() == Some("rs")))
    }
}
```

(I recognise that you're just mirroring the `bin` chain above.)