IDEA(boot): more formally separate libs are their initializers

This is an idea for separating the initialization of the "libraries" from their code. Benefits:

1. A library can be included in a unit test without forcing the initialization to happen.
1. The initialization becomes testable. Particularly if we pass in the events/hook services into these functions so we can mock them.
1. adds a framework for moving *away* from using plugin-mutable event handlers to set up necessary library state.
1. including any lib file doesn't run any procedural code (though it may set some local/global vars), to (mostly) be in compliance with PSR-1.

See #5777. cc @ewinslow