Implement indirect16HL, indirect16HLDE, and indirectCompareStrings

In particular, indirectCompareStrings is very useful.
Minor optimizations

Fix forgotten recursion call, and optimize a stack push sequence
Fix swap routine

You have to actually increment the addresses you're swapping, duh.
Change unit tests to do a string comparison