fix(analyzeRun): exempt milestones from the E105 duration bound
serialSGS places milestones with zero span regardless of their nominal
durationDays, but analyzeRun applied the (deadline - release) < duration
bound to them. A milestone carrying an explicit duration (as MPP/JSON
files can) with a same-day release + deadline gate was reported as
LEVELSET_E105 'no feasible placement exists' — and runFromConfig threw —
for a run serialSGS places successfully.