Fix for save method in JSONCollection

I had some issues with save() method in JSONCollection.

First, I get an infinite loop when I try to use it. This is because Play Writes return a JsValue and not a JsObject.
<pre lang="scala">  def save[T](doc: T, writeConcern: GetLastError = GetLastError())(implicit ec: ExecutionContext, writer: Writes[T]): Future[LastError] =
    save(writer.writes(doc), writeConcern)</pre>
<code>writer.writes(doc)</code> returns an JsValue so we don't call <code>save(doc: JsObject, writeConcern: GetLastError)</code> but we recall <code>save\[T\](doc: T, writeConcern: GetLastError = GetLastError())</code> with <code>T = JsValue</code>. This is the infinite loop.

The second issue is encountered when I try to save an object which has an _id setted but which does not exist in mongodb. In this case, the object is not saved in the database.

I wrote some unit tests to reproduce these issues easily. I hope that will help you. 

Please let me know if you need any further information.