Fix the execution method of the context

evecve & co. get a NULL-terminated list with the first "argument" being
the command itself (it's a convention). The original code had a few
issues (e.g. it failed to accept commands without arguments). This
pathch fixes those issues by nearly completely rewriting the function.
Please add spaces around the `+` here.