Simplifying things.

* Separated `state`
* Fake ES6 generators used everywhere
* Of course, tests :D
* Removing `.jshintignore`, break da rulz