fix(kff.Collection): new mutating collection methods should bind/unbind collection change events on added/removed items
feat(kff.createClass): allow "shared" property to be defined outside of service object
refactor(kff.Collection, kff.List): remove kff.List and merge all its functionality into kff.Collection

BREAKING CHANGE: any code that uses kff.List (which shouldn't) won't work
feat(kff.createModelClass): a new helper function that creates specific "model" class

This function creates a class constructor like the kff.createClass function but generates getter/setter function for every attribute. Example:

var Model = kff.createModelClass({
    args: [{
        a: 1
    }]
}, {});

var model = new Model();

// Setter (witch parameter)
model.a(2)

// Getter (without parameter)
model.a()
// => 2