Changes candidate iterator behavior and adds unit tests.

All dispersy_yield_..._candidates methods now behave the same way:
- take no arguments
- yields only Candidate instances
- stops when no more Candidates are available

Having the above behavior makes it much easier to treat them as
Candidate iterators.  Normal python tools such as cycle and ifilter
can be used to obtain more candididates and exclude certain candidates
when needed.