Golang: Implement a custom write-preferred Mutex

This is a continuation of series for writing custom synchronization tools provide by Go. Previously we implemented a read-preferred Mutex…