Reduce ref/deref operations by introducing swap() functions.

Removed redundant ```ref```/```deref``` operations which make the memory management complicated from ```ByteVector```, ```String```, ```List``` and ```Map``` by introducing ```swap()``` functions.
Now, each class has only a pair of ```ref```/```deref``` except for ```ByteVector```. ```ByteVector``` is a little more complicated due to the nested ```RefCounter```s should be fixed in another patch.