Flavin-Dependent Enzymes: Mechanisms Structures and Applications