First pass of interpreter for declarative handlers

This is #15, with merge conflicts resolved.