Static dispatch

Replaced utility::apply(fun, params<Ts...>(engine, ds)) by applyFunc(fun, engine, ds). This new function is strongly coupled to Extension itself but allows to replace the runtime loop in params by a comile-time dispatch. It also adds a new helper class type_at<> to perform even more template wizardry.