[Finishes #75068770] Allow additional blocks in function category

Currently, if you set up a custom PROCEDURES category, you are unable to have any child blocks, other than the auto-generated ones.  This fix allows you to stick your own blocks in there as well.

The way this had worked was that instead of processing children of the category node in xml, blockly-core would just set blocks to be the custom type.  Now, we'll instead set the first block to be the custom type, and then continue processing child nodes.  It's not super pretty, but it's no uglier and low impact.

Things I've tested:
(1) Create a function category that also has child blocks.  Create a function and make sure the caller still appears in the category.
(2) Create a function category with no child blocks. Validate existence of caller block on function creation.
(3) Same as 2, but with variables custom category.

Can you think of any other good test cases?
What does syncTrees do? What did not calling `syncTrees` on custom variables and procedures do before?