Server programs no longer exit immediately.

This change works by holding the JoinGuard inside of the Listening object produced by Server::listen(...). It's interesting to note the following behaviors:

The following prints the listening line and explicitly waits while the server is open.
```rust
fn main() {
    let server = Server::http(Ipv4Addr(127, 0, 0, 1), 1337);
    let mut listening = server.listen(echo).unwrap();
    println!("Listening on http://127.0.0.1:1337");
    listening.await();
    // nothing here will execute until after the server is closed.
}
```

The following prints the listening line and implicitly waits while the server is open.
```rust
fn main() {
    let server = Server::http(Ipv4Addr(127, 0, 0, 1), 1337);
    let listening = server.listen(echo).unwrap();
    println!("Listening on http://127.0.0.1:1337");
    // note, await is omitted, but the result of listen is named, thus staying in scope.
    // any additional lines of code will execute.
}
```

Both of the following ~~exit immediately~~ join before printing (for the same reason).
```rust
fn main() {
    let server = Server::http(Ipv4Addr(127, 0, 0, 1), 1337);
    let _ = server.listen(echo).unwrap();
    println!("Listening on http://127.0.0.1:1337");
}
```

```rust
fn main() {
    let server = Server::http(Ipv4Addr(127, 0, 0, 1), 1337);
    server.listen(echo).unwrap();
    println!("Listening on http://127.0.0.1:1337");
}
```