History-dependent scheduling: Models and algorithms for scheduling with general precedence and sequence dependence. (December 2015)