Refactor blob language acquisition, check for instance of 'tree'

Refactor:
 * Blob language acquisition (determine_file_summary)

Add:
 * Additional check on blob to see if it is an instances of Grit::Tree,
   these trees don't have a language (and the sub blobs are still
   covered via the rest of the diff stats)
 * tree? method to diff_summary
 * 'Submodule' as a language
Refactor location of #get_blob and #find_blob_in_tree to own module

Refactor:
 * #get_blob and #find_blob_in_tree to its own module
Add regex time check to collector_spec#extract_commit with valid commit

Add:
 * Spec to check the time using regex for time format matching, this was
   removed back in 4c56172ebbb02a6603eabbecd3f41affb2804337