Originally, `fail` is added to simplify error handling, avoiding large changes on
the Txn() interface API. But it turns out that `fail` becomes the root of many bugs.
So this commit remove the `fail` and make an API refactory.
With the adoption of Go module, GOPATH is not need any more
But github.com/etcd-io/gofail doesn't support packages outside the GOPATH
To overcome the drawback, this commit replace it with our forked one
* change Txn() function signature to Txn(active bool)
* ActivePendingTxn() is not used any more because Txn() does the work
* change executor builder getStartTS() uint64 to getStartTS() (uint64, error)