added named function arguments, which are specified using a map of argument
names to values.  these names carry forward through matrix operations, which
will allow us to compose complicated matrices and ensure functions are resolved
with the correct argument