Further optimisations

Vince,

Thanks for merging my earlier PR, sorry, should have stated I was still going :)

This basically tries to reduce the number of calls to `xalloc` by preserving the score array for the duration of the call to `find_best_match`. Got another ~25% reduction in run time w/ this commit, although it changes the `score_sequence` API & code of `find_best_match` slightly more than the last one did.

Again, this has been tests to check md5sums of the output, and hasn't changed anything there. The tests have been updated to use the optimised `score_sequence` API, and they pass. It has also been `valgrind`'d, and no leaks/still reachable addresses were found.

Cheers!
Kevin