Implement the `TASK_TYPE_GET_EMPTY_CLASSROOM` task type to allow users to fetch available classroom information.
- Add `TASK_TYPE_GET_EMPTY_CLASSROOM` to the `TaskType` enum in protobuf.
- Define `GetEmptyClassroomPayload` and `EmptyClassroomResultData` messages.
- Implement `getEmptyClassrooms`
Update the gRPC service definitions and handlers to provide more detailed
information for grades and exams.
- Add `GpaSummary` message to include average GPA, rank, and other
academic statistics.
- Expand `Grade` message with additional fields like `term`, `nature`,
`category`, and `is_exam`.
- Refactor `Exam` message to use `week` and `weekday` instead of `room`
and `seat`.
- Update `TaskHandler.getGrades` to populate the new `GpaSummary` and
enriched grade details.
- Update protobuf generated files to reflect schema changes.