remove magic from decorator and fix function binding

This PR:

* removes all the argument mapping magic from the `async_command` decorator
* binds `self` to the wrapped function before passing it to the `AsyncCommandResult` constructor
* Adds a `command_name` parameter to command functions to decouple function name from command name
* Fixes tests to match

Side effect: requires commands to only accept keyword arguments now.