implement PT_GNU_RELRO support
clean up internal dynamic linker functions enumerating phdrs

record phentsize in struct dso, so the phdrs can be easily
enumerated via it. simplify all functions enumerating phdrs
to require only struct dso. also merge find_map_range and
find_dso to kernel_mapped_dso function that does both tasks
during single phdr enumeration.
cosmetic improvements in dynamic linker cleanup

consistent use of braces in if/else structure, line length.
if dynamic linker's relro mprotect call fails, include reason in message
remove lazy ssp initialization

now that thread pointer is initialized always, ssp canary
initialization can be done unconditionally. this simplifies
the ldso as it does not try to detect ssp usage, and the
init function itself as it is always called exactly once.
this also merges ssp init path for shared and static linking.