title: Slick codeGenerator does not fill foreignKey names causing assertion failed: duplicate foreign key names detected
body: <pre><code>val included = Seq("File", "Project", "FileContent")
  val model = db.withSession { implicit session =&gt;        
      val tables = SQLiteDriver.getTables.list.filter(t =&gt; included.contains(t.name.name))
      createModel(tables, SQLiteDriver)
    }
  model.assertConsistency;
  </code></pre>
  
  <p>running the code above causes </p>
  
  <pre><code>java.lang.AssertionError: assertion failed: duplicate foreign key names detected
      at scala.Predef$.assert(Predef.scala:179)
      at scala.slick.model.Model$$anonfun$assertConsistency$3.apply(Model.scala:94)
      at scala.slick.model.Model$$anonfun$assertConsistency$3.apply(Model.scala:84)
      at scala.collection.immutable.List.foreach(List.scala:318)
      at scala.slick.model.Model.assertConsistency(Model.scala:84)
      ...
  </code></pre>
  
  <p>following code prints all three keys incorrectly with ForeignKey.name=None</p>
  
  <pre><code>println(model.tables.foreach(t =&gt; println(t.foreignKeys)));
  
  ArrayBuffer(
  ForeignKey(None,QualifiedName(File,None,None),List(Column(parent,QualifiedName(File,None,None),Int,true,Set())),QualifiedName(File,None,None),List(Column(id,QualifiedName(File,None,None),Int,false,Set(PrimaryKey))),NoAction,NoAction), 
         ForeignKey(None,QualifiedName(File,None,None),List(Column(content,QualifiedName(File,None,None),String,true,Set())),QualifiedName(FileContent,None,None),List(Column(hash,QualifiedName(FileContent,None,None),String,false,Set(PrimaryKey))),NoAction,NoAction), 
         ForeignKey(None,QualifiedName(File,None,None),List(Column(project,QualifiedName(File,None,None),Int,false,Set())),QualifiedName(Project,None,None),List(Column(id,QualifiedName(Project,None,None),Int,false,Set(PrimaryKey))),NoAction,NoAction)
      )
  </code></pre>
  
  <p>but the this code prints key names correctly</p>
  
  <pre><code>db.withSession { implicit session =&gt;    
      SQLiteDriver.getTables.list.filter(t =&gt; included.contains(t.name.name)).foreach(t =&gt; println(t.getExportedKeys.list))    
    }
  
  List(MForeignKey(MQName(Project),id,MQName(File),project,1,NoAction,NoAction,Some(),Some(),5))
  List(MForeignKey(MQName(FileContent),hash,MQName(File),content,1,NoAction,NoAction,Some(),Some(),5))
  List(MForeignKey(MQName(File),id,MQName(File),parent,1,NoAction,NoAction,Some(),Some(),5))
  </code></pre>
  
  <p>is there any way to force slick to fill key names correctly, or how can be those names altered without having to recreate the whole model by hand with different key name values ?</p>