emit 0.3.1

An experimental structured event emitter, currently work-in-progress.
> I'm learning Rust by implementing a structured logging API similar to the one found in [Serilog]http://serilog.net.

Log events consist of a format and list of *named* arguments:

```rust
#[macro_use]

extern crate emit;

use std::env;

fn main() {
    let _flush = emit::pipeline::init("http://localhost:5341/", None);
            
    emit!("Hello, {}!", name: env::var("USERNAME").unwrap());
}
```

These end up in JSON payloads like:

```json
{
  "Timestamp": "2016-03-17T00:17:01Z",
  "MessageTemplate": "Hello, {name}!",
  "Properties": {
    "name": "nblumhardt"
  }
}
```

Which can be rendered out to text or searched/sorted/filtered based on the event properties:

![Event in Seq](https://raw.githubusercontent.com/nblumhardt/emit/master/asset/event_in_seq.png)

I'm using Seq and its JSON format while I design the crate, but like Serilog this should eventually be pluggable to other log collectors and formats.

**What about the `log` crate?**

The `log!()` macros are obviously the best way to capture diagnostic events in Rust as it stands. However, `log` destructively renders events into text:

```rust
info!("Hello, {}!", env::var("USERNAME").unwrap());
```

There's no way for a log processing system to later pull the username value from this message, except through handwritten parsers/regular expressions.

The idea of `emit` is that rendering _can_ happen at any point - but the original values are preserved for easy machine processing as well.