Fix bug on calling non idempotent func

- replace all function call by reflect.ValueOf(f).Call([]reflect.Value{}) and memorize.
- replace BinaryExpr by translatedassert.Op*() except `==` and `!=`.
- replace !(a) to !(reflect.ValueOf(a).Bool())