Add unbounded matching

Adds unbounded fuzzy matching as per #7.

This PR both adds unbounded fuzzy matching and improves performance by ~40% by parallelising the matching and scoring process.

A combination of techniques were attempted, initially trying to use `NSEnumerationConcurrent` and serial queues for mutating the list, but it seems the internal DVTMergedSortArray does not like concurrent enumeration.

Initially, creating subarrays to work off worked alright, but since I wanted to eliminate the array creation, I tried striding, which was faster, but ended up with segmenting work in chunks for better cache locality.