Some refactoring for project, fix typos, make pep8 happier

I also add some new features:

* Add `output_dir` as `Grammar` argument. It specify custom ouput directory for generated modules;
* Add tox and nose for unit-test run, but STree test don't work now;
* Store generated files for plyplus grammar in `_cache` directory;
* Make `Grammar` class thread-safe (throup thread-local instance of `_Grammar`);