DDLs that doesn't modify rows like create/drop/truncate table, create/drop database
do not need to wait 2 lease on ddl worker, we can safely remove those wait to
speed up DDL.
But user may create a table, then insert data on that table on another TiDB server,
So we need to wait in session.
User can set a session variable to skip DDL wait if needed, and there is no risk of
data inconsistency.
This solution remove the need for user to set lease to zero when loading data,
It's much more safe and easy to use.
Make transaction life cycle under control, prepare for correctly handle schema out of date error.
The old `GetTxn(forceNew boll)` is replaced by `Txn` and `NewTxn`,
`CommitTxn` and `RollbackTxn` is removed.
* varsutil: remove dependency on 'types' for 'variable' package
'variable' package will be used in 'types', remove dependency on 'types' by
moving functions to a new 'varsutil' package.
Also extract 'SetExec' from 'SimpleExec'
Currently, truncate table deletes rows in table in one large transaction,
too large transaction is very likely to fail.
This commit use DDL to do the work, it returns instantly, old data will be
deleted by background worker.