Allow recursive xPDOObject::remove() beyond one level

Still prevents circular dependency problems without preventing proper recursive functionality by keeping track of specific objects being removed from each class by primary key, rather than just excluding all objects by alias or class of already processed relations

Addresses modxcms/xpdo#23 and should resolve modxcms/revolution#11453