Extract @ObjectId from @Id

@Id seems to bring confusion; many have tried to use it on an Integer, as if it was an alias for @JsonProperty("_id"). And, because it brings a de/serializer, it can only be used on String.

To avoid such problems, this pull-request extract the de/serializer from @Id into a new annotation, @ObjectId.

This offers two advantages:
— @Id can now be used everywhere as an alias for @JsonProperty("_id")
— @ObjectId is dedicated to String and can be used on document id and document embedded ObjectId (links to other documents)

@Id package have been renamed in order to advise .3 users.

The documentation can be edited the following way:
```java
// generate it!
public class Friend {
    @Id
    private Integer key;
}
// equivalent to
public class Friend {
    @JsonProperty("_id")
    private Integer key;
}
// equivalent to
public class Friend {
    private Integer _id;
}
```

And completed with:
```java
// auto generate
public class Friend {
    @ObjectId
    private String _id;
}
// equivalent to
public class Friend {
    @Id
    @ObjectId
    private String key;
}
// equivalent to
public class Friend {
    private ObjectId _id;
}
```