Typed arguments

Continuing work started in https://github.com/steipete/Aspects/pull/15.