chore: Remove unused variables and enable no-unused-vars rule
Enables `@typesctipt-eslint/no-unused-vars` and fixes all violations.
There are a couple of exceptions to the rule:
1. Spreads are ignored, making it possible to omit a property with
object spread operator, i.e. this code valid:
```ts
const { propToOmit, ...rest } = someObject
```
2. In some cases, we want to have a function argument that won't be used
in the function body. Main use-case for this is TS inference tests.
In that case, argument may be prefixed with `_` and the rule won't
trigger.