PLAT-6802 - Enhance performance of MasterHolidaySource

Enhance performance by avoiding cloning in lookup method.

* Old code cloned request object for every lookup. New code only clones when necessary.
* Add faster version of weekend check.
* Call weekend check in advance of creating object in common calls.
* Use set rather than binary search.
This caching code isn't actually threadsafe. Possibly not a major issue as the data retrieved is always the same. However, we may request the same date simultaneously (e.g similar trades all being valued at the same time on different threads) in which case we'll go to the master multiple times. Should we switch to a Guava cache with its valueLoader which would handle this OOTB?