Explicitly convert trailing fn options into a hash-map
Re-implement :no-defaults option to avoid breaking :assoc-fn

:assoc-fn is called with the value of the current option-map, which is
assumed to contain the default value of the option. This patch changes
:no-defaults to call select-keys on the option map before returning to
the user.