Don't duplicate Proc objects if not needed

For details, see the commit message of the first commit.

I'm doing this to erase Proc::Method in the next step. So, I'm adding a failing spec affected by it and tagging as such.

As you may notice, the failing spec is really the corner of corner of case. Probably, no one cares. Nevertheless, I want to merge Proc::Method code into the main Proc to fix it mainly because I really don't like the ugly hackish logic of `block.class != self and block.class != Method`. I just want to say like `block.class != self`.