World number one Ramy Ashour is through to the final of squash's San Francisco Open, after defeating third seed James Willstrop.