/*
   * Attribute accessor.
   *
   * It takes either a string or a symbol and returns
   * the value of the attribute.
   *
   * If its a symbol, all underline characters are converted
   * to colons. E.g. +:solvable_installsize+ -> +"solvable:installsize"+
   *
   * A +ValueError+ exception is raised if the attribute
   * name does not exist.
   *
   * +nil+ is returned if the attribute name exists but is not set for
   * the solvable.
   *
   *
   * call-seq:
   *  solvable["solvable:installsize"] -> VALUE
   *  solvable.attr("solvable:installsize") -> VALUE
   *  solvable.attr(:solvable_installsize) -> VALUE
   *
   */
  VALUE attr( VALUE attrname )