Unify and simplify CScript push methods

* Make CScript::operator<<(const std::vector<unsigned char>&) cover all push operations (including OP_0, OP_1..OP_16 and OP_1NEGATE), and make the push for numbers use that.
* Convert the uint256, uint160 and CPubKey into a single templated one using the vector push code.
* Get rid of the int64_t operator<<; better be explicit about what needs pushing, so change all number pushes to use CScriptNum (which, due to the generic vector push now also correctly uses OP_n).
* Get rid of some unused methods and constructors as a result.
Again, you're comment gives the impression that you're arguing this change is ok, on the basis that it can't be exploited right now. I'm arguing this change isn't ok, because we have solid evidence that it changes behavior that *could* be used for an exploit. I'm not sure how, and maybe it isn't possible, but it's obviously a risky change.

Adding a separate method to serialize a unsigned char vector to a PUSHDATA and nothing else, and changing FindAndDelete() calls to use that method, may be one way to mitigate the risk.

Note how all of the above also suggests that conversions of data *to* CScripts() is something that should ideally be kept separate of the consensus-critical code.