The use of clustering algorithms in critical care research to unravel patient heterogeneity