Simplify the implementation 

Using a channel-as-semaphore paradigm from (effective go)[http://golang.org/doc/effective_go.html#channels].
Add missing ServeHTTP call
Merge branch 'augustoroman-patch-1'