title: removeFrom with cascade all-delete-orphan does not work
body: <p>Grails 1.3.7 with MySQL 5.5</p>
  
  <p>Either I must be doing something brain-dead, or this is related to Grails issues <a href="http://jira.grails.org/browse/GRAILS-5804" rel="nofollow">http://jira.grails.org/browse/GRAILS-5804</a> and <a href="http://jira.grails.org/browse/GRAILS-4121" rel="nofollow">http://jira.grails.org/browse/GRAILS-4121</a> and similar.
  I have:</p>
  
  <pre><code>class Author {
      String name
      static hasMany = [books: Book]
      static constraints = {
          books cascade: 'all-delete-orphan'
      }
      String toString() {
          return name
      }
  }
  
  class Book {
      String title
      static belongsTo = [author: Author]
      static constraints = {
      }
      String toString() {
          return title
      }
  }
  
  Bootstrap:
  def a = new Author(name: 'Author0')
  a.save(flush: true, failOnError: true)      
  def b = new Book(title: 'Book0')
  a.addToBooks(b).save(flush: true, failOnError: true)
  
  class AuthorController {
      def index = {
          println("Controller code: " + "Old books by author: " + Author.get(1).books)
          def author = Author.findByName("Author0")
          def oldBooks = []
          oldBooks += author.books  // to avoid ConcurrentModificationException
          oldBooks.each {
              author.removeFromBooks(it)
          }
          author.save(flush: true, failOnError: true)
          println("Controller code: " + "New books by author: " + Author.get(1).books)
              render("All done!")
          }
      }
  </code></pre>
  
  <p>But when I navigate to localhost:8080/foo/author/index I get a 'not-null property references a null or transient value: foo.Book.author' during the save()</p>
  
  <p>I don't really know GORM-internals or Hibernate (proxied vs unproxied instances), I tried all combinations of using 'get' instead of 'find' but can't get this to work. Can someone explain how this is supposed to work?</p>