A Comprehensive Review of Security-constrained Unit Commitment