String diff (or expected/actual) reporting on BinaryExpression

Provide string diff reporting on BinaryExpression such as:
```
assert(foo === bar)
       |   |   |
       |   |   "abcdff"
       |   false
       "abcdef"

--- [string] bar
+++ [string] foo
@@ -1,6 +1,6 @@
 abcd
-f
+e
 f
```
Other types:
```
assert(this.ary.indexOf(who) === two)
            |   |       |    |   |
            |   |       |    |   2
            |   |       |    false
            |   -1      "ariya"
            [1,2,3]

$$$ [number] two
### [number] this.ary.indexOf(who)
$ 2
# -1
```
Starting with [jsondiffpatch](https://github.com/benjamine/jsondiffpatch) but now decided to use [google-diff-match-patch](https://code.google.com/p/google-diff-match-patch/) directly.

TODO
----------
* [x] Searching for nice diff libraries (thx @taichi!)
* [x] Detect BinaryExpression left/right
* [x] Dealing with Literals
* [x] Multibyte characters
* [x] Labels and alignments
* [x] Multi-hunk diff
* [x] Object / Array diff? Or reporter responsibility? -> Reporter's
* [x] Only on `===` and `==`
* [x] Line level diff
* [x] Refactor
* [x] Is actual on left and expected on right?
* [x] Not only strings?
* [x] Update power-assert README since dependencies are changed