EHRAgent: Code Empowers Large Language Models for Complex Tabular Reasoning on Electronic Health Records