introduce new feature: BOOTLOADER_LOOPCYCLES_TIMEOUT

This feature must be explicitly defined (Makefile.inc)

When greater than "0", "BOOTLOADER_LOOPCYCLES_TIMEOUT" defines how
many 16bit loopcycles can be cycled, before bootloader times out
and starts user firmware. Of course "BOOTLOADER_CAN_EXIT" must be
enabled.

Even if this value is too small, bootloader  will not exit as
long as bootLoaderConditionSimple() stays true.

Signed-off-by: Stephan Baerwolf <stephan.baerwolf@tu-ilmenau.de>
introduce new feature: BOOTLOADER_ALWAYSENTERPROGRAMMODE

Enabling "BOOTLOADER_ALWAYSENTERPROGRAMMODE" ignores bootLoaderCondition()
(BUT NOT bootLoaderConditionSimple()) and always enter the program-mode.

This is helpful to emulate behaviour of Arduino bootloaders

Use "-DCONFIG_HAVE__BOOTLOADER_ALWAYSENTERPROGRAMMODE" within
DEFINES variable of Makefile.inc to enable this feature.

Otherwise default is off.

Signed-off-by: Stephan Baerwolf <stephan.baerwolf@tu-ilmenau.de>
BUGfix: fix race condition between TIMEOUT and HIDDENEXIT

Signed-off-by: Stephan Baerwolf <stephan.baerwolf@tu-ilmenau.de>