refactor scheduler factory to use plugin architecture style like credentialprovider and cloudprovider for configuring priority functions and fit predicates.
created seperate package for algorithm providers, added tests to show that a given algorithm provider is well formed, added functions SchedulerFactory to help override algorithm provider config choices.