State events

| Q  | A
| --- | ---
| Bug fix? | no
| New feature? | yes
| BC breaks? | no
| Deprecations? | yes
| Issues fixed by this | closes #1 

Creates the new functionality suggested in enhancement issue #1; instead of updating the `state` property directly, create an accessor method to change the state and emit a `stateChange` event when that happens. This update relies on the v0.1.1 patch of [p2p-node](https://github.com/cryptocoinjs/p2p-node), which adds similar functionality to the Peer object.

# Tasks
- [x] Changelog updated
- [x] Usage/Documentation updated
- [x] Tests pass
- [x] ACK from other developers