build symbol table by sampling the given strings
symbol table can be used to build Encoder and Decoder
decode all string encodings by the given symbol table
decode bytes to string according to the give symbol table
encode all given strings
it will sample the given strings and build a symbol table which will be returned in a tuple
encode a single string
if including_table is true, it will encode the symbol table to bytes
and add it the encoding bytes header, i.e., | symbol table bytes | string encoding bytes |