code: function _gpfDefAttr (name, base, definition) {
      var
          isAlias = name.charAt(0) === "$",
          fullName,
          result;
      if (isAlias) {
          name = name.substr(1);
          fullName = name + "Attribute";
      } else {
          fullName = name;
      }
      result = _gpfDefAttrBase(fullName, base, definition);
      if (isAlias) {
          _gpfAlias(result, name);
      }
      return result;
  }
docs: gpf.define for attributes
  
  @param {String} name Attribute name. If it contains a dot, it is treated as absolute contextual.
  Otherwise, it is relative to "gpf.attributes". If starting with $ (and no dot), the contextual name will be the
  "gpf.attributes." + name(without $) + "Attribute" and an alias is automatically created
  @param {Function|string} [base=undefined] base Base attribute (or contextual name)
  @param {Object} [definition=undefined] definition Attribute definition
  @return {Function}