Now uses read-write lock, added several methods
Methods added:
ConcurrentDictionary:
mutateValue(forKey key: Key, mutation: (Value) -> Value)
ConcurrentArray:
mutateValue(at index: Int, mutation: (Element) -> Element)
subscript(safe index: Int) -> Element?