* Add `sortCriteria` parameter to `search` function in `IMAPServer.swift`
* Create `SortCriteria` enum with options for `DATE`, `ARRIVAL`, `FROM`, `TO`, `SUBJECT`, `SIZE`, and `REVERSE`
* Implement method to convert `SortCriteria` to NIO IMAP types
Related to #11
Implement the `SORT` command to allow clients to search and sort messages on the server.
* **SearchCommand.swift**
- Update `SearchCommand` to accept sort criteria as an optional parameter.
- Modify `toTaggedCommand` method to handle sort criteria.
* **IMAPServer.swift**
- Add sort criteria parameter to the existing `search` function.
- Add capability check for `SORT` before executing `SearchCommand`.
- Implement fallback to `SEARCH` if `SORT` is not supported.
* **SearchHandler.swift**
- Update `SearchHandler` to handle responses for both `SEARCH` and `SORT` commands.
- Modify error handling to include `SORT` command failures.
---
For more details, open the [Copilot Workspace session](https://copilot-workspace.githubnext.com/Cocoanetics/SwiftMail/issues/11?shareId=XXXX-XXXX-XXXX-XXXX).
Related to #9
Implement basic IMAP search functionality.
* Add `SearchCommand` struct in `Sources/SwiftIMAP/IMAP/Commands/SearchCommand.swift` conforming to `IMAPCommand` protocol.
* Add properties `identifierSet` and `criteria`.
* Implement `toTaggedCommand` method to convert to IMAP tagged command.
* Add initializer to accept `identifierSet` and `criteria` parameters.
* Add `SearchHandler` class in `Sources/SwiftIMAP/IMAP/Handler/SearchHandler.swift` conforming to `IMAPCommandHandler` protocol.
* Add properties to store search results.
* Implement `processResponse` method to handle tagged and untagged responses.
* Implement `handleTaggedOKResponse` and `handleTaggedErrorResponse` methods.
* Add `SearchCriteria` enum in `Sources/SwiftIMAP/Models/SearchCriteria.swift` to model Swift NIO IMAP criteria.
* Include cases like `.uid(number)`, `.unseen`, `.smaller(number)`, etc.
* Modify `Sources/SwiftIMAP/IMAPServer.swift` to implement `search` function with a generic type `<T: MessageIdentifier>`.
* Accept parameters: `identifierSet` (optional) and `criteria` (array of enums).
* Return a collection of message identifiers `[T]`.
* Switch between `.search` and `.uidSearch` based on the type of `T`.
---
For more details, open the [Copilot Workspace session](https://copilot-workspace.githubnext.com/Cocoanetics/SwiftMail/issues/9?shareId=XXXX-XXXX-XXXX-XXXX).