First low-level API, slow mantel implementation

Tests are passing!
Unit tests for negative and perfect correlation
Add support for zero permutations
Add tests for one-sided greater and less
Add two-sided unit tests
Add a couple more TODO items before I forget...
IDs are optional when constructing a distance matrix.
Refactor to use DistanceMatrix

Slower than it was before due to lots of extra validation/work being done during p-value calcs.
Rename bioenv vegan example datasets

We're going to be adding more vegan example datasets for mantel so need to distinguish between them as they are not exactly the same dataset as what we're using with bioenv.
Move bioenv code into _bioenv module

Decided to go this route instead of keeping it in the base module as this wasn't a great long-term solution -- we'll be adding several more methods to this subpackage and can't put them all in base! 'nosetests --with-doctest' seems to be happy with this naming scheme and it shouldn't affect users.
Add vegan test dataset to unit tests
Add DistanceMatrix.permute method

2D permutation code was previously in mantel but makes sense to have in DistanceMatrix.
Make p-value calculations more numpythonic

Also slightly faster than before.
Add minimum size checking for dms
Add tests for input without variance
Add unit tests to ensure no side effects
Add test for DistanceMatrix input; 'twosided' -> 'two-sided'
Add docstring and tests for DistanceMatrix.permute
Add Mecha-Docstring to mantel function
Fix pep8/flake8 errors