Very hacked bioenv/BEST port from qiime.stats

But tests are passing!
Add test data to data directory
Match SampleID column name to what's used in QIIME

Doesn't really matter, but might as well be consistent.
Complete rewrite of bioenv algorithm

Much shorter and cleaner. The previous implementation had a bug where the environment variables weren't being scaled before calculating Euclidean distances. The results now match R's vegan::bioenv function.

Returns a pandas data frame for easy formatting of results that are very similar to what you get in R.

Still have a bunch of TODOs to fill out, more unit tests to add, performance testing, etc.
Ensure implicit column order is maintained
Add check for duplicate column names
Add check for at least one column present
Add basic type checking for primary inputs
Add checks for missing data, dm IDs, and columns
Add check for numeric-only columns
Add test to ensure inputs aren't modified
Fix type conversion bug

Discovered while making test data more noisy (i.e. messing with order, extra data with some wrong types, etc.)
Add more noisy data to unit tests
Reorder test dataframe, ensure we get same results
Rename one of the unit tests

Two tests had the same name... woops
Add more type-checking tests

Also change exception type to TypeError
Add more tests with various reorderings of data

Includes reorderings of distance matrix rows/cols, and data frame columns specified in a different order.
Fix erroneous comment in unit tests
Rename test data and test vars

Shorter, simpler names since I ended up just using a single test dataset with minor variations.
Add description of unit test dataset