Fix for 552: JSON parse memory leak

Instead of using json.load(fp) to check if a file is JSON, simply check the first non-whitespace char
Avoids the leak, and uses much less memory overall
Fix for 551: Use iterative read approach

Greatly reduces RAM usage by reading line-by-line
Also returns sparse data to the constructor, rather than dense data
Still able to handle lists and files as input
Update test case for _extract_data_from_tsv()

When fixing 551, RAM usage was reduced by returning sparse data
Test case has been updated to check for sparse [row,col,val] list