Add a preconditions module, and refactor errors

100% code coverage for the preconditions module.

Usage:
```
$.checkState(something === anotherthing, 'Expected something to be
anotherthing');
$.checkArgument(something < 100, 'something', 'must be less than 100');
$.checkArgumentType(something, PrivateKey, 'something'); // The third
argument is a helper to mention the name of the argument
$.checkArgumentType(something, PrivateKey); // but it's optional (will
show up as "(unknown argument)")
```
Merge pull request #695 from eordano/feature/errors

Add a preconditions module, and refactor errors
tweak cyclomatic complexity jshint config
add Script#isPushOnly()
Merge pull request #694 from maraoz/add/interpreter

add Script#isPushOnly(), for script evaluation
Refactor transaction to match new API

* Refactor transaction into a different subfolder
* Added a lot of tests for sighash and transaction serialization (from
  reddit's and Ryan X. Charles' `fullnode`)
* Drop "only" from sighash tests and consolidate logs
Split buildPKH arguments, add Copy constructor on publickey
Consistency with "id", "hash", and "_getHash"
Merge pull request #675 from eordano/feature/transaction

Refactor transaction class
add Script#removeCodeSeparators tests
Refactor Contributing
add sorting to Script#buildMutlisigOut()
Merge pull request #701 from eordano/contributing

Refactor Contributing
add sorting to Script#buildMutlisigOut()
Merge pull request #702 from maraoz/add/interpreter2

add sorting to Script#buildMutlisigOut()
Add transport/connection class
Add transport/peer class
Add transport/peermanager class
Progress on sending and receiving messages
Add messages serialization