Avoid returning the same candidate completion more than once

Keeps track of the words returned as completion candidates by the source
completion functions, by tracking them. Some sloppy completion plug-ins are
known to return duplicate candidates on occassion (e.g. clang_complete does
this), so this completely workarounds the issue.