Adaptive controllers for discrete-time systems with arbitrary zeros: An overview