implement delete attribute

The code related to rewrite is not completely provided. I don't know how to generate correct guards so that different branches in the code could be reflected in the code generated by rewriter.

The following logic is implemented:
1. invoke \_\_delattr\_\_ if exists
2. del instance \_\_dict\_\_
3. if attr is not in \_\_dict\_\_ of instance, check if attr exists in the its class.
       >if found, invoke \_\_delete\_\_ attribute if exists or throw AttributeError.
       >if not, throw AttributeError

Hmmm.... so none of our setattr() logic special-cases a NULL value as meaning it should delete the attribute, so this line will just end up putting a NULL value into the attributes array.  This will mostly work by accident, since we use a NULL return from getattr() to mean the attribute didn't exist, but I'm not sure we should rely on this.  For instance, this test will segfault:
```python
# run-args: -n
def f(o):
    print o.a

class C(object):
    pass

c = C()
c.a = 1

f(c)
del c.a
f(c) # segfaults
```
The problem is that inline caches assume that they won't get a NULL attribute value if the hidden-class guard tells it that the attribute exists.  There are two ways I can think of approaching this:
1) make the rewrites check if the attribute value is NULL, and generally solidify the notion that we will store NULL attribute values, or
2) make setattr(NULL) delete the attribute from the attributes array, which involves changing the hidden class and rearranging the attributes array.

I don't like option 1 very much since we'll be storing these extra NULLs and then have to do a bunch of extra checks for them later.  Option 2 seems like the proper way to do it: we should get-or-create a new hidden class (which is how we specify the set of attributes an object has), then rearrange + compact the attributes array.  This probably won't be very efficient, but my guess is that delattr()s don't happen too often, and there are things we can do down the line if we want to make it more efficient.