script: move CScriptID to standard.h and add a ctor for creating them from CScripts

This allows for a reversal of the current behavior.

This:
CScript foo;
CScriptID bar(foo.GetID());

Becomes:
CScript foo;
CScriptID bar(foo);

This way, CScript is no longer dependent on CScriptID or Hash();
script: remove all uses of CScript::GetID()
script: remove CScriptID::GetID()
script: add ToByteVector() for converting anything with begin/end

This should move to a util header once their dependencies are cleaned up.
script: use ToByteVector for all core structures that are added to scripts
script: remove old methods of writing core structures
script: move ToString and ValueString out of the header
script: add a slew of includes all around before removing some from script.h

Lots of files ended up with indirect includes from script.h.
script: drop core includes

The string processing headers are sticking around for now, we may drop them
later.
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.