Fixes for 551 and 552

For issue #551, the `_extract_data_from_tsv()` function was modified to use an iterative readline strategy, rather than use `readlines()`. It also returns sparse data, rather than dense data. This saves a ton of RAM. The function can still handle input as a filestream object, or lists. As a result of this change, a test case in test_table.py had to be modified. It expected dense output, but has been changed to expect a list of `[row, col, val]`.

For issue #552, `json.load(fp)` was taking the entire file into RAM and not letting that memory go. This is an issue with the json package. To work around this, a simpler test was devised. Check for the first non-whitespace character in the file, and if it is `{`, then we can be very reasonably certain it is JSON and not TSV. This prevents both the memory block, and an undesirable spike in RAM usage even if the memory block were fixed.
Should it be `... and line.startswith(header_mark))` without the negation?

BTW, there are no tests for the logic to handle `header_mark`, we don't use that in the biom codebase, seems to assume that the header mark is one character long without any check/documentation. Do we really need that extra parameter?
It's inside a private function, but can be potentially be called through the `.from_tsv` method because kwargs are passed on. However, that behaviour is not documented so people should have to go through the code to find it...