Tasks:
- see examples
- implement extend(obj, ...objects)so keys from objects will be mixed into obj only if it doesn't contain those keys
- implement wrap(obj, ...funcs)so if obj contains func.name it should be wrapped
- implement mixin logable()
- implement universal equilateralmixin for for N sides (see6-class.js)
- implement emitablewithObject.defineProperty(see6-evants.js)
- implement mixin for prototypes (not instances)
- implement extendfor mixins with additionaloverride:Booleanflag
const mix2 = [
  {
    override: true,
    toString() {
      return `${this.name} - ${this.city} - ${this.born}`;
    }
  },
  {
    override: false,
    age() {
      const year = new Date().getFullYear();
      const born = new Date(this.born).getFullYear();
      return year - born;
    }
  }
];
extend(obj1, mix1, mix2);