Scheduler changes for extensibility

The predicate and priority functions are now configurable. Currently the default ones are being used but different functions can be selected by providing arguments to the factory. For now, in order to customize the scheduler, the scheduler main/executor function is the one that needs to be changed. The function selections can be based on configuration in etcd (there is a separate issue tracking that --> https://github.com/GoogleCloudPlatform/kubernetes/issues/1627).

Also, I have taken the first step towards allowing/combining multiple priority functions and using a simple weighted average for the combined score.
It was being caught towards the end of the function if no minions were found that could fit the predicates. I added this check here to validate that minions existed and were listed prior to running them through the predicates.