title: Mongoengine cyclic reference and reverse_delete_rule: mongoengine.errors.NotRegistered
body: <p>The following code has a scheme and a tag, a scheme is a tree of tags.</p>
  
  <pre class="lang-py prettyprint-override"><code>from mongoengine import *
  
  
  class Scheme(Document):
      #_id = None  # provided by mongodb
      name = StringField(max_length=120, required=True)
      tags = ListField(ReferenceField('Tag', reverse_delete_rule=PULL))
  
  
  class Tag(Document):
      name = StringField(max_length=120)
      annotation_scheme = ReferenceField('Scheme', reverse_delete_rule=CASCADE)
      subtags = ListField(ReferenceField('self', reverse_delete_rule=PULL))
      parent = ReferenceField('self', reverse_delete_rule=CASCADE)
  </code></pre>
  
  <p>the line
    <code>tags = ListField(ReferenceField('Tag', reverse_delete_rule=PULL))</code> causes the error:</p>
  
  <pre><code>mongoengine.errors.NotRegistered: `Tag` has not been registered in the document registry.
  </code></pre>
  
  <p>Note that if I remove <code>reverse_delete_rule=PULL</code> everything works fine.
  How I can solve this and keep the correct cascading behaviour?</p>