fix yarn conatainer allocation

currently we are having random problem with allocating evaluators of different memory size, especially when the requested evaluators' sizes are not requested in ascending memory-size order.

this PR is to tighten up our container allocation logic.

The scenarios with different requesting orders that have been tested (<1, 512MB> means request of 1 evaluator of 512MB):

1)	<1, 512 MB >  <1, 2048 MB >
2)	<1, 2048 MB >  <1, 512 MB >
3)	<2, 512 MB >  <1, 2048 MB >
4)	<2, 2048 MB >  <1, 512 MB >
5)	<1, 2048 MB >  <2, 512 MB >
6)	<1, 2048 MB >  <1, 1024 MB >  <1, 2048 MB>
7)	<1, 1024 MB >  <1, 2048 MB > <1, 1024 MB >