snippets: rewrite of snippets engine to allow for expansions of sub variables.

This also introduces GbSourceSnippetContext to manage the expansion context.
It still needs some work but this is a lot closer. Will grow to support
push/pop of snippets so we can complete snippets within snippets.

Drops the old "state" stuff from GbSourceView since it never worked well.