Updated FDModel to only be created/modified on a single thread.

FDModel now creates a NSRecursiveLock which is used by it and any other
class that wants to ensure they are only creating/modifying instances
of FDModel on a single, common thread.

I don’t like how many calls to “unlock” are required inside
FDModelProvider but rather than get hung up on that implementation
detail I chose to brute force it for the time being.