IncEpoch should use CAS for epoch check

1. cleanup panic: use log.Fatal in most cases for clear output in failure.
2. IncEpoch race: the check doesn't guarantee consistency. It should use CAS. A better solution, though no written here, is to use the version we get from the response.
@xiaoyunwu @xiang90 
This is the main thing that needs to change. The check isn't consistent.