fix AsyncResult.get_dict for single result

and add tests for single-result and invalid input (multiple results on one engine).

closes #3646