Computational Methods for Modifying Enzyme Specificity: from Molding the Active Site to Allosteric Considerations