makes the scalahost business more precise

We actually need two kinds of scalahosts: one that's created from just Global,
and another one that's created from MacroContext.

Also this commit fixes the need to cast cake-based inputs and outputs to
contexts by using the standard [G <: Global] type parameter technique.