Wrap and merge functions when merging options

Experimental extension to enable the wrapping and merging of
functions defined as defaults:

````clojure
(defresource foo
  {:exists? (...) } ;; some default
  {:exists? (wrap (fn [f] (fn [ctx] ...)))}   ;; f is the default above
              ;; do sth with f and ctx and return something
  {...}  ;; even more defaults
  :exists? true ...) ;; or kws args at the end
````
See examples/clj/sandbox.clj for a potential application.

### TODO

find out how to handler different orders of wrapping. I.e. make an earlier definition wrap a later definition, or how to force it the other way round:

Option a) 

`(defresource foo {:a f1} {:a (wrap f2)})`. Here f2 wraps f1

Option b)

maybe `(defresource foo {:a f1} (:a (wrapped f2)})`, so that f1 wraps f2