Text this: From Integer Programming to Machine Learning: A Technical Review on Solving University Timetabling Problems