schedule refactor
1.job.run() only in excuteJob(), cancelJob() pop the job, then call excuteJob(), setTimer() only setTimeout the next job
Merge pull request #1 from crazybach/master

schedule refactor