Given an implementation of a binary search tree including parent pointers: - implement `splay` method, possibly utilizing the provided `rotate` operation performing a single rotation; - update `lookup`, `insert` and `remove` methods to utilize it correctly. You should submit the `splay_operation.*` file (but not the `splay_operation_test.*`).