Remove unused include

* src/decode.c: Don't include main.h.
Use binary search IBWT algorithm for derandomization

* src/decode.c (decode): During block derandomization use slower IBWT
algorithm based on binary search to avoid extra memory allocation.
Decoder memory optimizations

* src/decode.c (retrieve): Don't release internal state memory.
(decoder_init): Don't allocate any memory.
(decoder_alloc_size): New function.
(decoder_free): Remove function.
* src/decode.h: Update function declarations for decoder API.
* src/expand.c: Update to new decoder API.
Encoder memory optimizations

* src/encode.c (encoder_init): Don't allocate any memory.
(encoder_alloc_size): New function.
(encode): Don't allocate or release any memory.
(transmit): Don't release memory after successfull transmission.
* src/encode.h: Update function declarations for new encoder API.
* src/compress.c: Update to new encoder API.
Avoid mamory allocation in divbwt

* src/divbwt.c (sort_typeBstar): Zero buckets with bzero() instead of
looping over array.
(divbwt): Avoid dynamic memory allocation.
* src/encode.h: Update function declaration for divbwt().
* src/encode.c: Use union to share memory for buckets used in suffix
sorting and different structures used for prefix coding.
Don't include xalloc.h by default

* src/common.h: Don't include xalloc.h header.
* src/main.c: Include xalloc.h header.
* src/process.h: Likewise.
Define restrict when not using config.h

* src/common.h [!HAVE_CONFIG_H]: Define restrict as empty macro.
Implement transmitting into internal buffer

* src/encode.c (transmit): Use an internal buffer if no explicit
external buffer was provided.
* src/encode.h: Update API declaration for transmit();
Wrap long lines