This is currently quite messy: the user needs to explicitly name one algorithm as the "default", the code of processing that is a bit hairy.
The new logic is:
1) if there is a clustering algorithm named 'default' it becomes the default one.
2) if there's any algorithm defined at all, the first one in declaration order becomes the default one.
There is no need to declare clustering.algorithm parameter for the clustering component, unless the default from the above procedure needs to be altered.
This is a fully backwards compatible improvement that allows one to declare more than one algorithm and give them sensible names.