reflect.Value.Call is pretty slow.
In addition to always allocating a slice for its []reflect.Value result parameters, it
also does a lot of prep work on each call.
It would be nice to both avoid that allocation and also do the setup checks just once.
Maybe a new method to return some sort of 'Caller' type that makes repeated Calls
faster, with less paranoia and no allocation.
Or just speed up the checks and make a new Call method that also accepts a slice for the
result values.