Add smart ByteString and Occurrence compression

- small occurrence sets are not compressed (BS.length < 80)
  - not sure if this is a good value for Snappy too
- the *.Smart modules also contain trace functions

Issues:
- smart Occurrence compression might be faster with an
  'Either ByteString Occurrences', so that Occurrences do not need to
  be serialized at all (or at least not deserialized)
- some code duplication with code that is not codec-specific in *Smart
Cleanup