Add diff.Strings and change/add to diff_test.go

In diff.go:
- added `Strings` to the API to avoid duplicating strings into bytes when using this package.
- added `GranularDiff` and `GranularStrings` to merge changes that are within a certain granularity of each other.

In diff_test.go
- Changed package name from `diff` to `diff_test` because having access to diff.go internals was unnecessary. This change forces the concept of choosing diff.Bytes or diff.Runes as necessary (as opposed to your use of
    the Diff function itself for everything). This has the minor downfalls of verbosity and requiring me to copy the `ints` struct and Equal method from diff.go
- Added a test for GranularStrings which also effectively tests GranularDiff.
- Added benchmarks for Bytes, Strings and Ints and fixed Runes to call diff.Runes as opposed to Diff.

In example_test.go
- Changed ExampleInterface to ExampleDiff so the example can show in godoc.
- Moved the names map inside ExampleDiff to help clarify what ExampleDiff is doing in godoc.
- Added an example for GranularStrings.

Notes:
Benchmarks for Bytes and Strings show similar timings.

    $ go test -bench=. -benchtime=10s
    PASS
    BenchmarkDiff	 5000000	      2435 ns/op
    BenchmarkInts	10000000	      2597 ns/op
    BenchmarkDiffRunes	10000000	      2663 ns/op
    BenchmarkDiffBytes	 1000000	     20401 ns/op
    BenchmarkDiffStrings	 1000000	     19898 ns/op
    ok  	github.com/twmb/diff	113.706s