Refactor contribution and project observers

It also extract some duplicated code to a concern (notifiable).