Avoid returning nil in #primary_candidate

When there is no suitable candidate, instead of memoizing and
returning a nil value, the #primary_candidate method should
still return the rank 0 candidate, or raise an error.