Refactor github.js a bit.
Move back to a recursive GitHub API request solution.

This way we ensure that we're only calling the callback
once.
getSummaries() should check all array lengths before derefing.
Variable names should not collide.

We shouldn't be using the local variable 'components'
when a global var of that name has already been
declared.