Expiration Saturday is not the third Saturday of the month. It is the Saturday following the third Friday of the month. Fixed Option.getExpirySaturday(), then deprecated it to Option.calculateFutureExpiry() which checks to see if the third Friday falls on a holiday. Which I don't know how to test against since I can't find it happening, at least I got bored looking when I hit 2020.
Refactored Option.getExpirySaturday() into .calculateFutureExpiry() and removed erroneous holiday check. Broke TradingSession.isMarketHoliday() out from .marketIsOpenToday(). Wrote unit tests for both changes and passed.
Introduced Google Guava immutable collections into TradingSession. Built immutable maps of holidays and early closes for both 2013 and 2014. Replaced int[], providing more flexibility (trivial expansion/maintenance) and all the documented benefits of the library.
Continuing to fiddle with task updateLaunchScript
Added DateTimeZone.forID(America/New_York) to all constructors where appropriate, including DateTime(MutableDateTime, TZ) just to keep things very consistant. Only DateTime constructors without a NY TZ argument are in TradingSession.marketIsOpenToday() and used to display the date in DEBUG logs.
Light housekeeping on some logging.
Corrected grammar in README
Merge branch 'optiondate' into develop