a LRU scheduler for load balancing in TaskSchedulerImpl

this PR is for SPARK-979(https://spark-project.atlassian.net/browse/SPARK-979), where @rxin pointed out that the Spark Scheduler is very deterministic.

the main changes include

1. Add a LRUMap in util package

2. remove freeCores in CoarseGrainedSchedulerBackend.scala and save WorkerOffer in a LRUMap to avoid new operation everytime

3. change the implementation of resourceOffers in TaskSchedulerImpl. Now it takes a LRUMap as input and balances the load with LRU principle