We used to use NSObjects, which was really expensive, because for each commit
as many as 100 graphlines can be created. By preallocating them and not
using NSObjects in general, we gain a massive speedup
This reduces memory cost somewhat (10MB on the git.git repository),
while still keeping the same functionality :) Better would be to
use structs in a c array in the cellinfo, as the NSArray and
NSObject type information together now use more memory.
This introduces a new object, PBGitLane that keeps track of the current lane.
We used to only need a sha for a lane, but now that more information is
needed, an extra object is in order. PBGitLane keeps a lane index number. This
number is later used to pick a color.