[WIP] loss function name consistency

This is a checkpoint to solve #3481 
Actually, because the __init__ method sets self.loss to loss, will this actually be a problem? If someone were to create an object with ```loss="HINGE"```, would it be a concern if the cloned (and the initial object) had ```self.loss=="l1"```