feat(peer_server): stop service when removed

It doesn't modify the exit logic, but makes external code know
when removal happens and be able to determine what it should do.
fix(etcd): exit 0 when removed
fix(peer_server): check running status before start/stop

This makes peer server more robust.
chore(peer_server): add more function description
chore(peer_server): more explanation for asyncRemove
chore(peer_server): adjust code to make it more clear
Merge pull request #772 from unihorn/81

feat(peer_server): stop service when removed