Various improvements to skbio.stats.distance.mantel/pwmantel functions

Various improvements to `skbio.stats.distance.mantel` and `skbio.stats.distance.pwmantel`, including:

- addition of `strict` and `lookup` optional parameters in `mantel` (these were previously only available in `pwmantel`)
- reordering/filtering of `DistanceMatrix` inputs to `mantel` (previously only available in `pwmantel`)
- support for `array_like` input to `pwmantel` (now consistent with `mantel`)
- new and expanded doctest examples for `mantel` and `pwmantel`
- refactored and more extensive unit testing for both functions

See the changelog for more details.

Fixes #443.
@gregcaporaso good idea to make the error message more specific.

@wasade I like your idea of splitting this out into a separate private function to avoid code duplication. I'd prefer to continue using the try/except instead of `issubset` because IMO it's a bit more pythonic. We also get access to the offending ID for inclusion in the error message, which is likely to be helpful to users.