Combinatorial and computational challenges for biocatalyst design