Replace attribution placeholders recursively

ThunderForest is referring to OpenCycleMap which in turn refers to OpenStreetMap, but the previous implementation did not allow nesting.

Fixed with this PR.