Forward error correction for optical transmission systems