Add result type :return

Allows asynchronous programmatic access to the result of a custom eval.
A custom evaller must pass an option map containing `:result-type :return`
and a `:handler object/object` that listens for a `:return` trigger;
upon successful eval of the custom function, its returned value is sent
to the triggered behavior.
Add custom triggers to :return; now returning a map

Custom evallers of `:result-type :return` can include a `:trigger` keyword
in their options map to specify the trigger to raise upon successful
completion. The default trigger is `:return`.

The data sent to the handler is now a map containing:
`:result` as the eval result, and
`:loc` as the location of the cursor at eval invoke time.
Merge all options into metadata of custom evals

Allows to add arbitrary options to a custom evaller.
If `result-type` of the evaller is `:return`, the full map of metadata
is returned instead of just the cursor location.

The data sent to a return handler is now a map containing:
`:result` as the eval result, and
`:meta` as the metadata used for custom evaluation.
Merge pull request #11 from ndr-qef/result.return

Add result type :return to custom eval