e.g. JSXIdentifier -> jsxIdentifier. The jSXIdentifier alias isn't removed, so this commit doesn't introduce breaking changes.
This generates the dynamic functions at buildtime and also splits the package into smaller files to avoid dependency circles.