Autofixing: assertions

I attempted to start work on autofixing.

The main idea is to implement autofixing with least pain/overhead as it is possible. This is the very start of the work.

My plan:

- [x] 1. Asssertions in `Errors` object. Collecting use-cases for the assertions (which can be used for further autofixing) and implementing them. The assertions API must be as generic as possible (to be able to implement further autofixing in different ways).
- [x] 2. Integrate assertions into the rules (instead of `errors.add()`). I realize that is will not cover 100% of the cases, but it is OK for now.
- [ ] 3. Cover assertions with tests.
- [ ] 4. Merge this to JSCS code to allow people use better assertions.
- [ ] 5. Implement autofixing based on the assertions (join tokens on specified assertions). Introduce CLI option.
- [ ] 6. Cover autofixing with tests.

@mikesherov, @markelog, @mrjoelkemp, I need your attention, guys!

Relates to #516
Either add `filename` here or in `_addError` as to not blow away: https://github.com/jscs-dev/node-jscs/blob/2ca671be3d3de645417d4c565bda2e7251950f2f/lib/errors.js#L43. Not sure if you'd get a merge conflict when rebasing off of the new master.