updated diff code, added tests, maintenance

diff
* performance tuning diff.ts
* split string/object diff code to separate files
* use jsesc instead of json.stringify
* wrap string diff on line breaks (first generation, needs re-imagining)

tests
* compare cli output for various scenarios
* using grunt-run-grunt and gruntfile-gtx
* test diff module output
* shared some diff fixtures
* fixed/cleaned various

maintenance
* adding tslint
* dropped underscore dependency
* updated TypeScript version
* updated some typings
* switched bundled jsDiff for npm version
* updated README.md
* updated writer/styler (taken from tsd)
* fixed/cleaned various