Marking Code Without Breaking It: Code Watermarking for Detecting LLM-Generated Code