It seems like an interesting idea, although I kinda like the ability to put functions among the code, I think it's quicker to setup and debug. Using a group normally puts them off my way when needed.
By looking at your mockup I realized that you could just use event sheets to store function code and have a very similar situation with the current C2 features. You could either have one event sheet for all functions, or one event sheet per function. Then just include the event sheets when you need to use them.
The only thing that's necessary in the official plugin is guarantee support to calls between included event sheets.
And zsangerous , think in functions like detours or shortcuts inside your code where you can interrupt your event execution flow for a while, call and execute another piece of code, then return to the same place it was before.
It's very useful for modular programming, where you make a piece of code that has a specific function that can be reused whenever you need that functionality.