charset: Added a charset module

This module represents the set of characters allowed for transformation
and handle classes of equivalent characters.

Signed-off-by: Celelibi <celelibi@gmail.com>
filtered_string: Now use charset module

This do not really simplify anything for this module. Doesn't make it
more complicated either...

Signed-off-by: Celelibi <celelibi@gmail.com>
unvigenere: Added --charset and -c options.

Bring the charset choice to the user. Every --charset make a new string
of equivalent characters.

Signed-off-by: Celelibi <celelibi@gmail.com>
charset: Added a sanity check

All the charset strings must have the same length.

Signed-off-by: Celelibi <celelibi@gmail.com>
charset: simplified cs_equiv

Some variables were not used at all.

Signed-off-by: Celelibi <celelibi@gmail.com>
charset: Cache the number of distinct symbols

The number of distinct symbols is actually just the string length of
every string that make the charset. Better compute it once for all.

Signed-off-by: Celelibi <celelibi@gmail.com>