Fixed everything to be more DST-change-proof (hackish solutions)

Changes made:
options.date is always in 'YYYY-MM-DD' string format, which is assumed
to be in the user's TZ. prepareDate parses these and adds the time
component to them when outputting selected dates.
DST checks are added to various places (especially
Date.prototype.addDays) to make sure the date is set
correctly when using date manipulation methods.