Initial commit

r? @metajack @kmcallister

Can we have a module rather than suffixes for namespacing? E.g.:

```rust
mod atom {
    pub enum StaticAtom {
        EmptyString,
        // ...
    }
}
```

Usage: `atom::EmptyString` instead of `EmptyStringAtom`.