ScenEval: A Benchmark for Scenario-Based Evaluation of Code Generation