Implement fair scheduler for spark local mode

1. Abstract the TaskSetManager interface for ClusterTaskSetManager and LocalTaskSetManager
2. Use original thread pool for scheduler resource
3. Finish the local end-to-end test for scheduler algorithm