Add summary mode, add improved summaries, and improve performance.

Originally I was working on just adding summary mode (so part content is not returned, only parts count).

While working on the code I noticed the GSM Detector could be improved to to use a sparsely populated array of characters as an associative array, instead of using `String.prototype.indexOf` to check the character was part of the GSM character set.