Programmable Design of Protein Interaction Specificity and Logic Gates