Respect #![crate_name]

Hi!

Currently, if I have a main file like this:

```rust
#![crate_name = "hello"]

fn main() {
    println!("Hello world!");
}
```

`make exe` will create an executable on `bin/main`, instead of `bin/hello`.

This PR changes the behavior by calling `rustc --print-file-name` to get the preferred file name, and defaults it to `main`