Don't allow undefined symbols in loadable modules in gnu toolset.

Link loadable modules with "-z defs" flag to ensure that the created shared
object can really be loaded.

While it can be useful to create loadable modules with unresolved symbols
(e.g. to bind to the symbols defined in the program loading them), this
doesn't work currently under neither Windows (where it is not possible at all)
nor OS X (where we'd need to use "-undefined dynamic_lookup" to make it
possible), so make gnu toolset behaviour consistent with them and more useful
by default. If this proves to be too limiting in the future, we can always add
"allow-undefined" option later.