Fixed shutdown issues.

I wasn't synchronizing on the original SynchronizedList which led
to non-deterministic behavior. In correcting that I found another
race condition in nodeStateChanged in regard to removing a RiakNode
from the list then checking the size of the list.

Converting over to using a RW lock and defensively copying the list
when performing start/stop operations on the nodes is way safer and
actually works properly.
Merge pull request #331 from basho/stop-futures-fix

Fixed shutdown issues.