consensus lib work: add status codes to the script interpreter and remove logging

Cleaned up version of #5188

Attempt to codify the possible error statuses associated with script
validation. The second commit (move-only) moves the other flags into the newly
created script/types.h as part of the upcoming external interface.

Logging has also been removed in order to drop the dependency on util.h. It can
be re-added to bitcoind as-needed. This makes script verification finally free
of application state and boost!
Nit: can you add the error messages that you remove here as comment?
```patch
- if (vchPubKey.size() < 33)
+ if (vchPubKey.size() < 33) // Non-canonical public key: too short
- return error("Non-canonical public key: too short");
+ return false;
```
We do lose some troubleshooting information here, as the error mechanism provides no way to signal warnings/details of script interpretation. But I don't see an alternative either. Maybe in the future it would be useful to add a way to get a detailed trace of execution.