docs: function Avowal(options) {
      var opts = options || {};
      opts.templates = opts.templates || {};
  
      if (!opts.name) {
        fail('form name attribute needed.');
      }
  
      this.form = document.querySelector('form[name=' + opts.name + ']');
      if (!this.form) {
        fail('form "' + opts.name + '" not found.');
      }
  
      this._state = {};
      this._cache = {};
      this._lifecycle = {};
      this._statusMessages = {};
      this._templates = {
        success: opts.templates.success || '<span>{{message}}</span>',
        error: opts.templates.error || '<span>{{message}}</span>'
      };
  
      this._initEventDelegation(opts.on || 'input');
    }