[patch] FCL: Separate casesensitive setting for short and long options in TCustomApplication

Summary

Short / Long options in TCustomApplication should have separate settings for casesensitivity.
The attached patch is for FPC trunk. The code is backwards compatible. Using only CaseSensitiveOptions works as before. The new feature happens through CaseSensitiveShortOptions and CaseSensitiveLongOptions.

More Information

Typically a console program wants to support casesensitive short options but long options can be case-insensitive.
This is the case with LazBuild of Lazarus project. It now has an ugly hack where CaseSensitiveOptions is toggled back and forth.

BTW, the patch also moves a TCustomApplication.HasOption function next to another version of HasOption.

Say a program supports -v and --version options. Both return the program version.
TCustomApplication.CheckOptions complains about --v and -version which is correct. However TCustomApplication.HasOption accepts them. Internally it uses TCustomApplication.FindOptionIndex. The internal Longopt flag is based on the number of dashes (-) but has no effect.
Is this intentional? If not, do you want me to look at it further and maybe fix it?

0001-FCL-Casesensitive-separate-long-and-short-options.patch