Refactor the gRPC client and task handling logic to improve modularity,
error handling, and observability.
- Split `grpc/handler.go` into specialized handler files (login,
classroom, exams, grades, schedule) to reduce complexity.
- Replace standard `log` with `log/slog` throughout the project for
structured logging.
- Refactor `grpc/client.go` to use a thread-safe connection management
pattern with `sync.RWMutex`.
- Remove the legacy `service` package and HTTP server implementation,
transitioning the application to a pure gRPC runner mode.
- Clean up `config` and `pkg/errors` to remove unused utilities and
simplify the API.
- Improve error reporting in parsers and HTTP clients by checking
response status codes.
Implement new gRPC task handlers for retrieving student grades and exam schedules. This includes adding new parser logic for processing score and exam data, and updating the client capabilities to advertise support for these new task types.
- Add `getGrades` and `getExams` handlers in `grpc/handler.go`
- Add `parser/encoding.go`, `parser/exam.go`, and `parser/score.go` for data parsing
- Update `grpc/client.go` to include `TASK_TYPE_GET_GRADES` and `TASK_TYPE_GET_EXAMS` in capabilities