Implement the algorithm choosing flag (`-a`)

Most of the additions reside in the AlgorithmFinder class. As of now it uses a constant which defines which algorithms are available. I couldn't figure out a non-ugly way to dynamically find all the available algorithms, so this will probably work for the time being.