Rough draft for pipelining system.

pipeline.lua defines pipelines, which allow you to define a set of objects and functions which act on those objects, and run all of them with the condition that only a certain number of them can run at once.  This allows us to sequence several key events in the torrent client.