Tagged terminal skeleton

This is unfortunately impossible to implement right now,
but the idea is nice enough to keep it in a separate branch.
Partially working terminal tagging

Each proto context participating in kernel generation carries around generic
state (std::map<std::string, boost::any>) that may be used by some of kernel
generation functions.

refs #39
Terminal tagging works for all kinds of terminals

refs #39