Added copy on write mechanism

This will prevent us from having to fully copy the hosts list for
every query plan. I've also updated the RefCounted object to use
release/acquire memory ordering semantics which will likely perform
much better than the  sequential consistent memory ordering we were
using before. Here's the references I used:

http://www.boost.org/doc/libs/1_55_0/doc/html/atomic/usage_examples.html#boost_atomic.usage_examples.example_reference_counters
http://www.boost.org/doc/libs/1_55_0/doc/html/atomic/interface.html#atomic.interface.interface_memory_order

COW:
http://en.wikibooks.org/wiki/More_C%2B%2B_Idioms/Copy-on-write