[MERGE] more refactoring of re_intuit_start()
This is the second merge commit of work I've done on re_intuit_start().
This one mostly concentrates on the block of code that looks for a start
class. It does a lot of reorganisation of the ordering of the various
nested if/elses, and by doing do manages to eliminate three labels and
associated gotos.
It also audits that block for UTF8 correctness, either fixing or
documenting areas where byte rather than char arithmetic was being
performed. At this point I've now done a basic audit of the whole
function.
It also swaps the start class and 'update BmUSEFUL' blocks. This seems
more logical, and makes the code simpler.
Finally, it cleans up and updates a lot of comments in the function
generally.
This merge has mainly been simplifying, cleaning up and fixing work.
I still have a big list of stuff that *could* be done, including further
optimisations.