Add initial port of qiime.stats.Anosim class

Some interfaces changes, but mostly the same implementation as before. Still needs more unit tests, performance improvements, and removal of functionality in favor of scipy.
Replace ranking code with scipy.stats.rankdata

Already *much* faster and way fewer lines of code! Still more performance improvements to be made.
Add test for unequal group sizes, > 2 groups

Also improve performance by another ~2x.
Use more numpythonic way to create grouping matrix

Another ~2x speedup. Still kinda messy, there's gotta be a better way to do this...
Using cartesian product for better performance

Code is also shorter, simpler, and cleaner.
Add input validation and tests
Add categorical stats results container

Has a simpler delimited text formatter. Untested
Remove context manager with StringIO
update anosim code to use new results class
remove/replace outdated comments, rename some vars

starting to clean up the code. docstrings are pretty much nonexistent...
add initial permanova port

tests are passing, now we need to improve performance and clean up the code.  there's a lot of duplicate code between anosim and permanova, so a base class is also in order (same applies to the unit tests).
start with performance improvements

still a lot of work to be done
2x-3x performance improvement

uses a vectorized algorithm similar to anosim's. still some fat to trim...
another 2x speedup w00t
group sizes calc is a bit faster, more numpythonic
Add TODO for possible performance enhancement
remove outdated comments/docstrings
another ~30% speedup and shorter, cleaner code

uses ufunc to create grouping matrix
minor perf improvements to permanova

uses integer grouping vector
push common code into CategoricalStats base class