EngiBench: A Benchmark for Evaluating Large Language Models on Engineering Problem Solving