use goroutines to parrallelize the simulation

though I expected some overhead from using goroutines, on my quad-core
MBP performance is about 4x worse when parallelized than when not. I
must be messing something up, more digging to do