Extract out all data parsing logic in to data parser

this still passes the base test
Moving tests from core to data parser

also rewriting core build_document_set tests
Docs for data parser