Makefile: enable -race for go test to catch race conditions
client: fix send race condition by creating a single send hub channel
kontrol: fix race conditions to map access
client: fix race condition by avoiding shadowing the err variable
kite: change URL's to string.

1. This fixes a race condition of accesses within multiple goroutines to
the same KontrolURL pointer. Basically writing during a config.Copy()
and reading from the KontrolURL pointer would give us a race condition.

2. There is a heavy usage of url.Parse where it wouldn't be needed
otherwise. For example the KiteURL type has Unmarshaller and Marshaller
interfaces just to return the url in string format. Now that we have it
as string there is no need for additional url parsing for every
unmarshall/marshall.

3. It's difficult for API users of Kite to give it as url.URL. Every
third-party package outside is using a simple string as paramater. This
simplifies the whole kite package usage.
sockjsclient: fix race condition to rand struct by adding a mutex
pool: fix race condition by avoiding sharing the kites map.

* We also are improving the pool by adding two new methods. The kites
map is hidden as an implementation detail. Because the pool might be
implemented on some other data structures, therefore it shouldn't be
exposed. Also it allows us to create easy thread-safe packages.
dnode: fix race condition by protecting map access
tests: enable multiple client call tests

This enables us to catch funny other race conditions. It will increase
the time of the tests, however it's much more better because we can now
test how it acts for multiple hundreds of client interactions.
request: fix race condition by protecting pointer access
client: fix race condition per client instead of request based
kontrol_test: decrease numbers, doesn't work well with race detector
Merge pull request #40 from koding/race-fixes

kite: race condition fixes