Replaced ${BASH_SOURCE[0]} with ${BASH_SOURCE}

This enables shells which don't support the array syntax to parse
compatibility.sh. And in bash both forms have the same result.
Fixed: Initialize OPTIND with 1 and make it a local variable
Added workaround for shells the directoy of sourced files is not available

I added a new variable COLORIZE_SH_SOURCE_DIR which is used to source further
files if it is defined. This is for example required by the busybox ash, since
it provides no way to get the directory containing the file which is currently
processed.
Added: Default implementation of the compatibility layer

The default implementation should run on every POSIX compatible shell, but I
only tested it with the busybox ash.

I did not implement every function provided in the compatibility layer of ZSH
and Bash, but only the ones actually used in the colorize code, since that makes
the implementation much simpler.