Hiding Information in Completeness Holes: New Perspectives in Code Obfuscation and Watermarking