close
Graceful close: send ST_FIN (faithful to send_fin() → state fin_sent) and mark the stream closed locally. Idempotent. Does not wait for the peer's FIN.
Note: ByteStream does not declare close() (the seam is read/write only, see peer/ByteStream.kt), so this is a plain method. Callers invoke it on the concrete UtpStream when tearing the transport down.