Fix package / project interchange.
Avoid decline when link is different.
Fix again #2388.
Move Graph into osclib.
Add empty line.
Downloads is now a constant parameter.
More refactoring:

- Extract all the graph and cycle logic.
- Extract memoize.
- Start with CheckRepo.
Return only cycles.
Rewrite OBS mockup test, fixtures and tests.
Merge pull request #154 from aplanas/master

Some refactors pending to be integrated in osc check repo
let the source checker verify if the source changed

if it only changed slightly we don't bother the review team
(for now review assigned to coolo for debug purpose, but that won't
stay this way for long :)
Merge pull request #155 from openSUSE/coolo_skip_small_changes

let the source checker verify if the source changed
Move change_review_state.
Move pending_requests and get_request.
action #2460 - Fix OBS mockup to behave as OBS when wrong URL
Write only one comment per action

 * For every 'select' or 'unselect' a single comment is written in
   every affected project
 * Previous automatic comments are deleted (as a first approach)
 * For more info, see https://progress.opensuse.org/issues/2564
Give some love to the code.
Save some eye bleeding to pythonists
Small optimizations in the new code
Use markdown comments to hide the mark on generated OBS comments