differantiate error codes from h_compile() and update documentation
the regex backend already returned 2 for an internal failure, contrary to documentation, so this mainly brings the latter in line with existing behavior.
at the same time, fix a bug: h_compile would previously return "false" (0) on exceptions (longjmp).
make use of our new freedom to signal different error conditions from the context-free backends, notably "incompatible combinator" vs. "unresolvable conflict".