Provide status for non-mergeable PRs when state changes

This PR is the continued work on #85 after #87 is merged.

This completes the following tasks:

* extracted a function to post status for non-mergeable PR for reusing
* besides the PR event, handled state-change event, because the first status would be easily overwritten by Travis's
* avoid infinite loop by: only post status when the state is external, i.e. not originated by the tooling server itself

TODO:

* [ ] add some tests to ensure coverage