Adds case insensitivity, as well as logic to prevent duplicates.
Fixes comment
Chages image libraries to process tags in a case insensitive way (They're still stored in their original case, though)
Changes how we load files to use a generator so we don't need to store the entire list in memory first.
Moves the GetFileList function to be under functions.
Changes OddManOut to be a generator.
Changes the PowerSet function to be a generator as well. For the time being, the generator code is in a different function to aid with the transition.
Changes the tagsets code to work with generated sequences.
Gets rid of the {...}Generator wrappers
Cleans up the functions test code, and makes it work with the new generator functions.