Port OrdinationResults I/O to skbio.io

Ported `OrdinationResults` I/O to `skbio.io.ordres`, deprecating `OrdinationResults.from_file`/`to_file` in favor of `read` and `write`. Large refactoring of the parser and formatter to remove duplicate code. Added a sniffer for the file format.

Fixes #645. @ebolyen can you please review?
What happens if an EOF occurs before the number of rows expected? Would it be better to do something like this?
```
for i, line in zip(range(rows), fh):
    vals = line.strip().split(\t)
    ...

if i != rows - 1:
    raise OrdResFormatError()
```