remove command timeout

@benbjohnson I removed command timeout related stuff in this pull request.
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. 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.