Locally-Constrained de Bruijn Codes: Properties, Enumeration, Code Constructions, and Applications