code: function Composition(c) {
      var defaults = c.defaults,
          config = c;
  
      if(defaults) {
          mix(config, config.defaults);
          delete config.defaults;
      }
  
      apply(this, config);
  }
docs: @class  Luc.Composition
  @protected
  Class that wraps {@link Luc.define#$compositions composition} config objects
  to conform to an api. This class is not available externally.  The config object
  will override any protected methods and default configs.  Defaults
  can be used for often used configs, keys that are not defaults will
  override the defaults.
  
  var C = Luc.define({
  $compositions: {
  defaults: Luc.compositionEnums.EventEmitter,
  methods: ['emit']
  }
  });
  
  var c = new C()
  typeof c.emit
  >"function"
  typeof c.on
  >"undefined"
  
  If you want to add your own composition all you need to have is
  a name and a Constructor, the rest of the configs of this class and Luc.Composition.create
  can be used to inject behavior if needed.
  
  function Counter() {
  this.count = 0;
  };
  
  Counter.prototype = {
  getCount: function() {
  return this.count;
  },
  increaseCount: function() {
  this.count++;
  }
  }
  
  var C = Luc.define({
  $compositions: {
  name: 'counter',
  Constructor: Counter,
  methods: 'allMethods'
  }
  });
  
  var c = new C()
  
  c.increaseCount();
  c.increaseCount();
  c.increaseCount();
  c.getCount();
  >3
  c.count
  >undefined