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.
Also disallow undefined symbols when linking shared libraries.

There should be no need for undefined symbols in the regular shared libraries
(as opposed to dynamically loaded plugins/modules), so make the behaviour of
the "gnu" toolset more consistent with that of Windows linkers which refuse to
create DLLs with undefined symbols.
Merge pull request #28 from vslavik/no-undefined

Don't allow undefined symbols in neither modules nor shared libraries.