ARM,crt0.S: call s_init instead from ctr0.S

The only reason gd is setup before _main seems to be
the call to s_init. Therefore call s_init in crt0.S
after gd has been setup. (It might become system_init
one day, but that has the disadvantage that all versions
of board_init_f must call system_init).
ARM,crt0.S: optional init gd to gdata for spl

The common/spl changes gd to gdata in board_init_f.
I fail to see why. The only reason I can think of to
use the gdata is the case where is won't fit into the
region where the stack lives.

Move the init to crt0.S and make it a CONFIG.
ARM: do not assign gd outside of crt0.S
ARM: do not set gd again
ARM: make gd a function
am33xx: preloader_console_init is spl only