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: add ToByteVector() for converting anything with begin/end

This should move to a util header once their dependencies are cleaned up.
script: move ToString and ValueString out of the header
script: add a slew of includes all around and drop includes from script.h

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