Add support for function binding

In the existing implementation, functions that are bound with
`fn.bind(target)` do not properly report `true` when called with
`fn.calledOn(target)`. This patch adds special bind logic to the spy
proxy to keep track of the bound target.