Make Build.settings a cached_property

This will cache the property as long as the instance of the build object lives, which will give one read of the yaml file instead of three during Build.run_tests().

From django docs:
>The @cached_property decorator caches the result of a method with a single self argument as a property. The cached result will persist as long as the instance does, so if the instance is passed around and the function subsequently invoked, the cached result will be returned