Make script more modular

While the building system is not ready for #4692 , we can start moving the code already.
When #4692 gets reopened other PRs touching script can be rebased on top of this one and decrease the chances of them being breaking/getting broke by 4692.
In file included from ./script/compressor.h:9:
./script/script.h:197:19: error: no matching conversion for functional-style cast from 'const char [57]' to
      'scriptnum_error'
            throw scriptnum_error("CScriptNum(const std::vector<unsigned char>&) : overflow");
                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./script/script.h:173:7: note: candidate constructor (the implicit copy constructor) not viable: no known
      conversion from 'const char [57]' to 'const scriptnum_error' for 1st argument
class scriptnum_error : public std::runtime_error
      ^
./script/script.h:176:14: note: candidate constructor not viable: no known conversion from
      'const char [57]' to 'const std::string' (aka 'const basic_string<char, char_traits<char>,
      allocator<char> >') for 1st argument
    explicit scriptnum_error(const std::string& str) : std::runtime_error(str) {}
             ^
1 error generated.
make[1]: *** [qt/qt_libbitcoinqt_a-peertablemodel.o] Error 1
make: *** [src/qt/bitcoin-qt] Error 2