Switch to a prefix-free representation

We widen our bytes to 16-bit quantities, and set bit 9 of every
"byte" to ensure that our code will never see NUL bytes except after
the end of a string.

This lets us safely store both empty strings and strings containing
embedded NUL bytes (i.e. arbitrary binary data), at the cost of a
little more bit twiddling and one extra byte per internal node.
Drop the non-empty no-NULLs stuff from our one Arbitrary instance
Add an Eq instance
Add a delete function
Initial benchmark support
Benchmarks!
Roughly 3x performance improvement
Rename the top-level module

--HG--
rename : Data/CritBit.hs => Data/CritBit/Map/Lazy.hs
Sort imports and make them explicit
Marginally better docs

--HG--
extra : amend_source : de93191046556bab8c48890948309ce2e29c8157
Benchmark sorted, random, and reversed fromList

--HG--
extra : amend_source : 22ca8a033557418bd8294ac15249815bd744a1c3
Reorder constructors based on expected frequency

This is alleged to help performance, but I haven't seen any effect
myself.
Add an instance for Text
Add bytestring-trie benchmarks (it's much slower)
Benchmark delete
CPS-convert the delete function

This improves performance by about 20%.
Add a size function
Add a singleton function