evolve: fixed lock acquire before checking state
Before checking the states `repo.lock()` and `repo.wlock()` need
to be acquired. This was not happening in `evolve()` earlier.
This patch creates a seperate `_performevolve()` funtion which
can be then called with locks acquired.
This also removes the redundant lock acuquiring of `abortevolve`
and `continueevolve` as lock is now taken earlier.