adapt activeml to new amt api

This PR suggests one possible way to deal with different crowds without different subclasses extended from CrowdLabelGetterParameters. 

I'm also wondering if we can deal with different crowd task types in a way similar to this, i.e., not using subclasses. Currently, if a user wants to add a new type of task, they not only need to modify the python code, but also need to add subclasses in the scala code, which is not very convenient I think.