Cache fakeIds

Added a cache of the used fakeIds, this is now checked against when resolving relationships so they are resolved in the right order. This is by no means foolproof as they could clash with real Salesforce Ids in some cases, need to think of a better way of doing this but it's a decent enough hack to fix this for now.