Added some tests, Bug fix in Vigenere decode

Two nested loops were both using i to index so all possible mappings
weren't being generated