Add readConfigFileWithEnv for reading a config file with an initial

Add readConfigFileWithEnv for reading a config file with an initial environment of variable bindings. This is useful for passing build configuration data from Haskell to configuration files (e.g. for substituting source and build directory in relocatable builds).