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.
Isn't the inside of this if, just:
 ``return !cachedDates.isEmpty() && cachedDates.contains(dateToCheck);``?
Though I'd suggest the isEmpty check adds method complication without much value and we could just use:
 ``cachedDates.contains(dateToCheck);``