Add symmetric distance matrix subclass

Added ```SymmetricDistanceMatrix```, which is a subclass of ```DistanceMatrix```. ```DistanceMatrix``` now requires that input is 2D, square, and hollow, and ```SymmetricDistanceMatrix``` has an additional requirement that the data is symmetric.

We'll need this as I start working on QIIME integration (https://github.com/qiime/qiime/issues/829) because we have some scripts that only accept symmetric and hollow distance matrices. There are other scripts that work with both symmetric and asymmetric matrices (e.g., derived from the ```unifrac_g``` metric), so this is why I made the distinction between matrix types.