Package defining the concepts of a track source and a pipeline.

A track source is an object that implements the TrackSource interface, having a name and some method of obtaining tracks when required.

A pipeline enables many track sources to be represented as a graph that is queried, depth first, for the next available track. This enables complex permutations of playlists, filters and selectors, giving a high degree of control over the resulting stream of tracks.