Remove PySide as a dependency.

- Use python `object` as a parent class.
- Replace QMutex with a `threading.Lock`