Refactor Script and other small stuff

This PR:
- adds preconditions module to bitcore object, and refactors it's tests
- adds preconditions to Opcode, and adds tests.
- refactors Script to make all chunks be objects 
Way shorter, also more readable: ```this.chunks[0].opcodenum === Opcode.OP_HASH160 &&```