Better lint, unit tests

This diff fixes the linter and adds some documentation for it. The linter was broken in several ways and I only realized after testing it on a 3kloc production config:

- It should've outputted the config filename when printing errors, now it does
- The values in the nodes can have several types: `foo = bar`, `foo : bar`, `@foo`
- A value like `foo = bar/q?=` is perfectly legal, previously I was failing more than one `=` sign.

Also added a test script to prevent this from happening again. We don't have pre-commit hooks, but it still allows us to test changes to the linter. It's pretty neat too. For valid tests it simply outputs that they passed, for broken tests it outputs a diff between the expected and actual output of the linter. More details on how it works is in the readme files - pretty straight forward.

![screen shot 2013-08-30 at 2 06 28 pm](https://f.cloud.github.com/assets/821842/1057725/4d7bdf1e-117a-11e3-8f63-e2a854893ae9.png)

![screen shot 2013-08-30 at 2 19 52 pm](https://f.cloud.github.com/assets/821842/1057727/54597d82-117a-11e3-8043-337bec37b2a5.png)