Bucket should be go-routine safe and should be able to refresh() in a go-routine safe manner.

- Moved json info in Bucket into a seperate BucketInfo type. Protected access to it.
- Added a retry limit to the Do() function, for preventing it from blocking forever.
- (*Bucket)refresh() returns the acquired bucketInfo as well.
- Do() calls vbHash() again after a NOT_MY_VBUCKET error.
- Protected access to Bucket.connections

Another thing that I would like to do is to have refresh() functions go trough a list of BaseURLs. Currently if the first couchbase server that the Client connected to goes down, it will try to refresh the data from that same server again and again and all operations will fail.

It would be great if Client.BaseURL would be a list. And, parseURLResponse() would jump to the next BaseURL each time it is called. And it could keep the BaseURL list up-to-date after each "pools/default" call. It could also provide a function to force-update that list. And user could call it every 10 seconds for example. It would also be awesome if it would expose the cluster data to the user as well, that way, user of the API could save the list of target hosts, and try to connect to one of them during after a restart. This way, even if all the database machines would be taken down and new ones would be brought up, all would be fine, even if the app would be restarted afterwards, it would be fine.