remove command timeout

Fix https://github.com/goraft/raft/issues/116
@benbjohnson I removed command timeout related stuff in this pull request.
Motivation:
1. Create a timeout routines for each command cost a lot: Remove this improve about 30% performance based on my raft-bench. 
2. We can find a way to deal with the failure cases. 

The previous timeout might happen in two cases:
1. The uncommitted log is truncated due to `wrong` leader failure. A election timeout happens to a follower and it then promotes itself to leader, but the actually leader is actually alive. The commands that have not received by a majority of peers will get truncated and then a timeout will happen.
2. The leader is partitioned to a smaller set of machines. The command cannot successfully get committed. 

I remove the timeout. But I added a `truncate error` to solve case 1. 
The application need to solve case 2 itself. But it should be easy especially now user can register event observer. 
We can send `cannot reach peers` event.
Or we can just clear all uncommitted commands and stop to accept new commands if the leader cannot reach a majority of peers after a given period. 

Implementation ovewview:
1. remove the timeout go-routine. 
2. remove the log execution results.
3. attache the event to log entry, save result in the event and notify the event when log get committed. 
4. notify client when log entry get truncated