Delete search changes

 - Do not return strings in Controller methods, for now. The logic for the return statuses, should be defined later. For now we'll keep returning and using whatever the Repository return.

 - Good idea about the IDGenerator

 -  Methods in the Repository Pattern should be related to the Model, not to the Database implementation. Like return WriteConcernResult, not good.

 - Be consistent with naming, if the parent interface used 'id' as a reference to the key, do not change the name of the parameter in the subclass. 'subject_id'


- In the remove method of the controller you had:
var to_delete = Repository.FindById(subject);
var result = Repository.Remove(to_delete);

This is wrong, you're doing one extra query out of nothing. Just removeBy id in the Repository, and use the id you've gotten from the Controller. 


@MichaelMtz ,@ajadex FYI