title: Mutable NaturalId in FluentNHibernate throws exception when it is modified
body: <p>I have an entity with a surrogate Id and a composite NaturalId mapped with FluentNHibernate. I make the natural id mutable marking it "Not.ReadOnly()". Something like:</p>
  
  <pre><code>    public class EntityMap: ClassMap&lt;Entity&gt;
      {
          public EntityMap()
          {
              Id(x =&gt; x.Id);
  
              NaturalId().Not.ReadOnly()
                  .Reference(x =&gt; x.OtherEntity, "OtherEntityId")
                  .Property(x =&gt; x.IntegerProperty);
  
              // more fields
          }
     }
  </code></pre>
  
  <p>The generated xml is like:  </p>
  
  <pre><code> &lt;natural-id mutable="true"&gt;
        &lt;property name="IntegerProperty" type="System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"&gt;
          &lt;column name="IntegerProperty" /&gt;
        &lt;/property&gt;
        &lt;many-to-one class="OtherEntity, OtherEntity, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" name="OtherEntity"&gt;
          &lt;column name="OtherEntityId" /&gt;
        &lt;/many-to-one&gt;
      &lt;/natural-id&gt;
  </code></pre>
  
  <p>If I change OtherEntity, the operation works fine and the entity is updated in the database. If I change IntegerPropery, I get the exception: "immutable natural identifier of an instance of Namespace.Entity was altered".</p>
  
  <p>Why is it complaining about the "immutable natural identifier" if it is marked as mutable="true"?</p>
  
  <p>The code is something like:</p>
  
  <pre><code>using (var session = SessionManager.OpenSession())
  using (var tran = session.BeginTransaction())
  {
     session.Update(entity);
  
     entity.IntegerProperty = (int)differentValue;
  
     tran.Commit();
  }
  </code></pre>
  
  <p>Thanks</p>