Add a prototype for setting up callbacks on a method from a class object

Here you go, this works for adding callbacks at the class- and instance- level.  e.g.

```python
class Car(object):
    def __init__(self, name, speed):
        self.name = name
        self.speed = speed

    @supports_callbacks
    def get_speed(self):
        print "getting speed"
        return self.speed

# @pre_callback(Car.speed, takes_target_args=True)
def mycallback1(self):
    print "how's my driving?"

# @post_callback(Car.speed, takes_target_results=True)
def mycallback2(speed):
    if speed < 55:
        print "that's pretty slow"
    else:
        print "nice and fast"

# add to all cars:
Car.get_speed.add_post_callback(mycallback2, takes_target_result=True)

ferrari = Car('ferrari', 180)
truck = Car('truck', 50)

# add to just truck:
truck.get_speed.add_pre_callback(mycallback1, takes_target_args=True)

print "calling ferrari:"
ferrari.get_speed()
print

print "calling truck:"
truck.get_speed()
```

prints:
```
calling ferrari:
getting speed
nice and fast

calling truck:
how's my driving?
getting speed
that's pretty slow
```

It's not perfect, but perhaps that will get you unstuck.  If you get the tests running I'll add some to test this case.

I don't think we can do this.  If the label is the callback, then you cannot add the same callback with different options.  For instance, If you wanted to have the same function called back as a pre_callback and also as a post_callback, or even as a pre_callback multiple times (once with takes_target_args once without for instance).