/*
* 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 )