Words are Tuples and Wordlists is a set

Also added a "substitute word" function which just returns a single
subbed word, doesn't modify the known words