Here's what a stringified ```DistanceMatrix``` looks like:

```
>>> print dm
3x3 distance matrix
IDs:
a, b, c
Data:
[[ 0.    0.5   1.  ]
 [ 0.5   0.    0.75]
 [ 1.    0.75  0.  ]]
```

It includes the shape, a possibly truncated list of sample IDs (using ellipses), and the numpy array of distances (which numpy will automatically truncate as necessary).

I read up on ```__str__``` vs ```__repr__``` [here](http://stackoverflow.com/a/2626364). I was thinking of adding ```__repr__``` to look like:

```
>>> dm
DistanceMatrix(data=array([[ 0.        ,  0.4959299 ,  0.91161926,  0.01082506,  0.53995253],
                           [ 0.4959299 ,  0.        ,  0.7949963 ,  0.88034188,  0.64179517],
                           [ 0.91161926,  0.7949963 ,  0.        ,  0.91686833,  0.68840327],
                           [ 0.01082506,  0.88034188,  0.91686833,  0.        ,  0.21400816],
                           [ 0.53995253,  0.64179517,  0.68840327,  0.21400816,  0.        ]]),
               ids=('1', '2', '3', '4', '5'))
```

This would be a pretty unambiguous representation that might be useful to developers, or for logging.

For ```__str__```, I suppose we could return the tab-delimited format. My concern is that users might try printing a huge distance matrix and have a gigantic wall of text dumped to the interpreter. I don't have strong feelings about this- do you prefer full, tab-delimited output or a summary like the current ```__str__```?