Merge update ns into generate

Separating them is inconvenient.
Mark implementation fns and data private
Change keyword-groups to a map
Disjoin exception symbols from special forms in keyword-groups

Duplicate matches in the syntax script are resolved by last-one-wins, so
don't allow this to be an issue.
Add b:clojure_syntax_without_core_keywords

Some namespaces exclude vars from clojure.core; examples of this are
namespaces that use core.logic or piplin.

This variable allows a plugin to have complete control over all keyword
matches in the buffer.