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.
Guava cache was slower. The underlying master call should be rare, and results in the same data each time, thus the overhead of ensuring the master is called once isn't as desirable as it might seem. Unfortunately there is nothing sensible to synchronize on as an alternative.

The key point is that the code is fully thread-safe (concurrent hash map), its just that it might call the underlying more often than ideal. This behaviour is the same as before these changes.