System = function (sceneEl) {
  var component = _component_js__WEBPACK_IMPORTED_MODULE_1__ && _component_js__WEBPACK_IMPORTED_MODULE_1__.components[this.name];

  // Set reference to scene.
  this.el = sceneEl;
  this.sceneEl = sceneEl;

  // Set reference to matching component (if exists).
  if (component) {
    component.Component.prototype.system = this;
  }

  // Process system configuration.
  this.buildData();
  this.init();
  this.update({});
}
System class definition.

Systems provide global scope and services to a group of instantiated components of the
same class. They can also help abstract logic away from components such that components
only have to worry about data.

For example, a physics component that creates a physics world that oversees
all entities with a physics or rigid body component.

TODO: Have the System prototype reuse the Component prototype. Most code is copied
and some pieces are missing from the Component facilities (e.g., attribute caching,
setAttribute behavior).

@constructor
@param {Element} sceneEl - Handle to the scene element where system applies to.
@property {string} name - Name that system is registered under.