Generic syntax checkers

Add support for generic syntax checkers.

This PR splits syntax checking from processes, and adds `flycheck-define-generic-checker` to define syntax checkers for arbitrary functions.

Solves #294.

# TODO

- [ ] Fix remaining bugs and races
- [ ] Document status reporting protocol, i.e. the parameters of the status callback
- [ ] Update the `extending` chapter of the manual