Handle bad MCResponse error assertion

Before this could never happen.  Now it can't compile.
Limit the number of nmv retries to 2*node count

This doesn't actually fix the getbulk thing I was thinking of, but it is
a good idea in general to avoid looping on an unresolvable vb map
Centralize access to connection pools
Remove named error result from *Bucket.refresh

This does not add clarity
Atomically perform bucket refreshes

This should make things considerably less racy under failure.  Needs
more actual race testing with the race detector, though.

There are numerous caveats here since the bucket is still used both for
generating and parsing bucket descriptions on the wire *and* used to
represent a bucket within a running system.

The parts we expect to change may now do so freely.

cbugg: close bug-909 bug-903 bug-853
Don't panic on a connection return to a closed pool

Just close the connection and carry on with life.

cbugg: close bug-912
incorrectly compared number of attempts against MaxBulkRetries
Use the correct server list to create connection pools

cbugg: close bug-915
Also use the newly parsed bucket's data for nodelist and vbm
Only consider healthy nodes for random view URL

cbugg: close bug-907
Fixed the "defer" statement in Do() retry loop.

Encapsulated the code block that does the defer call within an anonymous
function. This way defer statement works properly and returns every connection
after each retry.