Improvements

* Func now caches reflection
* Func argument must be valid at construction, rather than later on in
the process
* DefaultResolver no longer makes call to Func::reflection()