I think I finally fixed the vanilla, unmodified BLEU algorithm. It was a really stupid fix
Switching the loops was necessary, but additionally the for ngram in output_ngrams needed to be outside
the scope of the reference in references loop. It's possible there was just an additional indentation in
the original to be honest. I also removed the break after finding one ngram that works

Essentially, we build a big list of all the reference ngrams. Then we do all the checking of the output
against it, removing things as we find them.