Fix PartialOrd for Atom

This snuck in during a Rust upgrade.
Add tests for low-level representation
Add more comprehensive benchmarks
Revert "atom: Slight efficiency optimization in string interning"

It causes segfaults in the new benchmark suite.

This reverts commit 724232d1b1c40fd44501c33024f840b033f816fb.
Consolidate packing / unpacking code

Mostly for safety and maintainability.  This makes it easy to see the overall
encoding scheme, between repr.rs and the representation tests in atom/mod.rs.

Thanks to the magic of LLVM's inlining and SROA, this code is faster on some
benchmarks and not significantly slower on any.

Also added debug_assert!s and changed the existing non-test assert!s.  I
believe they're all safe to omit in release builds.
Use #[unsafe_no_drop_flag] so that Atom can be only 64 bits

Drop flags are going away, hopefully, but in the mean time here's a simple fix.
Use lazy-static for the global hash table
Use XXHash instead of SipHash

This is an approximately 8% speedup on interning a 56-byte string.
Fix warnings
Add optional event logging

We can use this with Servo to generate traces from real websites for
optimization purposes.
Add an example for event logging
Add a little info to the README
Get rid of an unneeded unsafe in macros code
Merge pull request #37 from kmcallister/dev

Event logging and other improvements