Store the name and source code of templates in the `CodeObject`
Only allow OpenMP for templates that claim to be "OpenMP-compatible". Mark all the current standalone templates as compatible.
Move setting of optimization preference in the testing function so that it does not raise an error when a target is not available