Use micro-transactions by default
Make retrieval of repos a fine-grained process

Split repo creation from actual recursive 
dependency retrieval. Use Create and Fork events
as drivers for recursive repository retrieval
operations. 

The reason behind this is that we want DB 
transactions to be as short as possible. 

The prior behavior was to retrieve all data for
a repository in one big transaction. If the
repository had lots of forks, this transaction could 
last for hours, blocking the concurrent processing
of other events related to the repository.

The new behavior is to split all individual
retrieval steps (e.g. each commit, each PR, 
each fork) in individual transactions. 

Especially for forks, the commit copying from parent
optimisation along with the relative inactivity
of forks will hopefully lead to less transaction
conflicts.