Alex/github cloner

@txels:

This is the beginning of handling cloning behaviour.

There are some TODOs that are related in ``ensure_clones_for_project``.

I believe that we are missing a model in our architecture.
  - ``ProjectRepo``: A many to many table between Project and Repository. This would allow easier looking up of "have we already cloned this repo". 

Additionally, I'm unsure how we want to clone the repos in terms of deploy keys that we set up on the repositories.
 - Do we have a single pub+private key that we use for all repos? (seems bad to me)
 - Do we have one per repo?
 - Where should these be stored? In the DB - and we write the private key out to a temp file when we need it? or on disk?

Add a comment as to why this is needed.