any tests that use the filesystem should have their own unique directory, as we run our test suite in parallel and
cleanup of tests (removing directories) should not interfere with currently running tests
* Added addLink() and removeLink() to `ConfigSourceInterface`
* Added addLink() and removeLink() implementations to `JsonConfigSource`
* Added tests (+ a ton of fixtures) for `JsonConfigSource`
* Added additional docblocks
* Minor PSR-1/PSR-2 fixes here and there