toJSON support

@corinnekrych added toJSON support plus tests and refactored our existing model for clarity 

let me know what u think
just for the fun i'd replace Employee by Contributor and remove the field salary (replace by age) but really, just a small suggestion :)