Bevy Discovery

This crate adds #[derive(DiscoveryPlugin)] which will scan the project files for functions annotated with #[system] and register them automagically. Example:

```rust use bevy::prelude::*;

[macro_use]

extern crate bevy_discovery;

fn main() { App::build() .add_plugin(DiscoveryPlugin) .run(); }

[system]

fn discovered_system() { println!("Woo, discovered system!"); }

[system(stage::POST_UPDATE)]

fn postupdatesystem() { println!("Hey, post update system!"); }

[derive(DiscoveryPlugin)]

struct DiscoveryPlugin; ```

Compile time performance

Full rebuild Incremental
Normal 198.982 ± 1.167 s 25.944 ± 1.486 s
Discovered 207.636 ± 3.785 s 26.546 ± 1.782 s

These are the compile times for my fork of bevy-robbo, averaged over five runs with a discarded warmup round each using hyperfine.