Add ability to write tech module as a function (closes #363, BEM-930)