Related: #359
Slightly improves performance and reduces memory impact, as string data is not duplicated.
Adds a utility class and functions to load libraries and symbols from libraries somewhat safely. Libraries are immediately unloaded when the last reference to them is lost, so the shared_ptr should be stored if the library is actually needed.