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