A review of neighborhood structures for the job-shop scheduling problem