Easier subclassing
Hi,

Currently, sub-classing pandas objects is not as easy as it could be. 
This is the result of many methods explicitly creating specific classes. E.g.  the '_combine_const' method from 'matrix' explicitly returns a DataMatrix object:
    def _combine_const(self, other, func):
        if not self:
            return self

```
    # TODO: deal with objects
    return DataMatrix(func(self.values, other), index=self.index,
                      columns=self.columns)
```

Therefore, arithmetic operations (and some other operations) performed on a new class MyDataMatrix, inheriting form DataMatrix, return a DataMatrix object, rather than a MyDataMatrix object.

I can get around the problem using the ugly hack of overriding the problem methods, and forcing the output to the new class. E.g.,
    def _combine_const(self, other, func):
        temp = super(MyDataMatrix, self)._combine_const(other, func)
        temp.__class__ = self.**class**
        return temp 
However, I feel it would be easier to just change the original methods to return the class of the calling object, rather than a fixed class. E.g.,
    def _combine_const(self, other, func):
        if not self:
            return self

```
    # TODO: deal with objects
    return self.__class__(func(self.values, other), index=self.index,
                      columns=self.columns)
```

Hope this makes sense, and I'm not missing something.
Thanks for a very useful package!
