Recover from unexpected events better

When you restart the tracker server, all peers it's tracking are
discarded. Then, clients that are already running will continue to send
`update` events, but the tracker throws them away because it was
expected to get a `start` event first.

This should only be a warning, and not a fatal error. I just made the
following changes:

- unexpected `started` event (for peer already in swarm) is treated as
an `update`
- unexpected `stopped` event is discarded
- unexpected `completed` event is treated as a `start`
- unexpected `update` event (from peer not in swarm) is treated as
`start`

Parity with bittorrent-tracker PR
https://github.com/feross/bittorrent-tracker/issues/42
ws@0.5
update devDeps
simplify offer handling
set `id` on peer (expected by webtorrent-swarm)

Supersedes #2 and fixes
https://github.com/feross/webtorrent/issues/182#issuecomment-63423187
0.5.0