Fix slightly broken function table declarations.

Wow, LLVM is awfully picky about global function declarations. If you
pass a slightly mismatched declaration to getOrInsertFunction, it will
wrap it in a casting op, which will then no longer strictly be a
llvm::Function (technically, it will be a ConstantExpr for the cast),
which in turn could fail an assertion internal to LLVM when we
llvm::cast<> it to a Function -- but only for a DEBUG compile! So much
fun. These tweaks fix the few functions that weren't quite right, and
also make a more clear assertion error message if we get it wrong in the
future.
Allow queries of a group's name, and number/names of its layers
Switch OSLCompilerImpl::oso() to tinyformat template, now it's type safe
Allow OSLQuery from inside ShadingSystem
Asking for OSLQuery to be filled out for a loaded shader (specified by
ShaderGroup* and layer index) is much faster than using liboslquery
to read oso from disk.
Overhaul OSLQuery to replace std::string with ustring and string_view.
This should lead to fewer small allocations and more efficient setup
of OSLQuery.