Improve YARN allocation performance

This PR addresses https://issues.apache.org/jira/browse/REEF-6.
It changes the policy of sending requests to YARN RM from "one-request-at-a-time" to "one-kind-of-requests-at-a-time".

Similar to https://github.com/Microsoft-CISL/REEF/pull/1021, to circumvent YARN-314, we do not remove the last request of a batch of same-kind requests. 

But since now multiple requests are allocated at once, different kinds of same-priority requests can be in flight at once(i.e. a request from decResourceRequest + a request from addResourceRequest). This is not a problem when only considering memory/vcores since we can simply match bigger containers. 

But this can cause problems when we implement locality-strictness. I'd like to revisit this later when we work on locality-specific requests.

2 test sets of different sequence of (numberOfRequests, memory size) were tested

Test set 1:

(7, 1GB)
(5, 2GB)
(5, 1GB)
(3, 2GB)


Test set 2:  

(1, 1GB)
(1, 6GB)
(1, 2GB)
(1, 5GB)
(1, 3GB)
(1, 4GB)
(1, 4GB)
(1, 3GB)
(1, 5GB)
(1, 2GB)
(1, 6GB)
(1, 1GB)