Efficient algorithms for accurate hierarchical clustering of huge datasets: tackling the entire protein space