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 method would probably be better if split into one that handles caching of results and one that handles getting the data. The former calls the latter, determining whether to check the cache and whether to cache the results.