Refactored SkSL function creation and error handling

This breaks up the giant IRGenerator::convertFunction method into more-
manageable chunks, moves the functionality into FunctionDeclaration,
and funnels the DSL through it so it receives the same error checking.

Change-Id: Icf2ac650ab3d5276d8c0134062a4e7e220f9bf32
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/402778
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
Reviewed-by: John Stiles <johnstiles@google.com>
diff --git a/gn/sksl.gni b/gn/sksl.gni
index ad9a00d..266e8ff 100644
--- a/gn/sksl.gni
+++ b/gn/sksl.gni
@@ -132,6 +132,7 @@
   "$_src/sksl/ir/SkSLForStatement.h",
   "$_src/sksl/ir/SkSLFunctionCall.cpp",
   "$_src/sksl/ir/SkSLFunctionCall.h",
+  "$_src/sksl/ir/SkSLFunctionDeclaration.cpp",
   "$_src/sksl/ir/SkSLFunctionDeclaration.h",
   "$_src/sksl/ir/SkSLFunctionDefinition.h",
   "$_src/sksl/ir/SkSLFunctionPrototype.h",