raft: make tick send out messages.

@bmizerany I thought about this for a while. Then I realized the actions (outputs) should be all generated inside step function. I do not want to break this rule just due to the init problem. I made a little changes to break the init loop.

Now only `step` function can generate output messages. good for testing.
Do we need sm.state anymore?