Scope class with support for various kinds of symbols.

The kind of symbol generated will depend on the declaration context. e.g.
variable declarations within functions will produce local variables.