Passing an entire song between phases is only one model. Within that model, the spec I prefer is: whoever is receiving the song gets to choose what format he receives it in. Lots of small files, one big wav, whatever.
I have heard good things about Splice, which allows git-like collaboration.
What I want to underscore: there are great tools for individual and small-group creativity. I'm interested in processes for a large team that allows asynchronicity and scalable development.