Support arbitrary args, rather than just string args

I don't really like the leaking of extra::json types into our API,
probably want to eventually define an Arg type, which basically mimics the
json types.