Add exporting environment from libraries

In general, to use a third party libraries, you have to modify client
site's build environment for the libraries.  Instead of writing the
modifications in every client sites, this change lets you to write a
function that modifies the client site's build environment in the
library site to the said eliminate duplication.

This solution has its own problems though; two libraries may try to
modify a client site's build environment in a conflicting manner.

This change also reorganizes responsibilities of classes.