Fix function naming conflict with class overloads.

This fix takes into account the classname while generating overload
handlers.

Example:

If you have two classes:

```cpp
  class A {
    public:
      void doSomething(int);
      void doSomething(double);
  };

  class B {
    public:
      void doSomething(int);
      void doSomething(double);
  };
```

Before this patch, the overload handlers for `A::doSomething` and
`B::doSomething` create conflicting names and function redefinition compile errors
are caused.

After the patch, the overload handlers are named `classname_doSomething`
and no longer conflict.

This is might not the best way to implement this, but it
solves a critical problem on large projects, and specifically can affect
operator overloads that are being wrapped.