Vigenere refactor

Make it more abstract.
Add vigener factory, generate Vigenere_enc and Vigenere_dec using
factory