go/buildutil: use a counting semaphore to limit the number of parallel calls to ReadDir
go/buildutil: use a counting semaphore to limit the number of parallel calls to ReadDir

LGTM=gri
R=gri
CC=golang-codereviews
https://codereview.appspot.com/153430043

d0f/go-zh.tools,webfd/go-zh.tools,d0f/go-zh.tools,bryanxu/go-zh.tools,webfd/go-zh.tools,d0f/go-zh.tools,webfd/go-zh.tools,d0f/go-zh.tools,webfd/go-zh.tools,bryanxu/go-zh.tools,d0f/go-zh.tools,bryanxu/go-zh.tools,webfd/go-zh.tools,bryanxu/go-zh.tools,bryanxu/go-zh.tools