Bloch Oscillations in Semiconductors: Principles and Applications