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.

I also improved the logging in the DefaultNodeManager and changed the futures returned to be Future<Boolean>