Switched all top-level read/write methods from being synchronized to
using a ReadWriteLock, in order to allow multiple threads to read a BST
at once if needs be.