Class method.
Adds more attributes to this class.
NOTE: This will add a method to your class which can be used as an accessor/mutator.
Therefore make sure to avoid method name conflicts with this class.

A sub reference that will be called like a method (has reference to $self),
and is also passed the new and old values of this attribute.
Behind the scenes is a Moose trigger.
See also "Triggers" in Moose::Manual::Attributes.

The name of the attribute that will be created in class to refer back to this object.
If specified,
a reference to this object will be set in class when it is instantiated to avoid stale references.
This would only be useful in the case of a 1:1 relationship.

You can optionally precache the item that this method would produce,
if you already have it by passing it to the method here.
If you choose to use this option,
make sure what you're setting here actually matches the id attribute that would normally be used to find the item in question.

Class method.
Sets an attribue name to use to recast this object as another class.
This allows you to pull multiple object types from the same domain.
If the attribute is defined when reading the information from SimpleDB,
the object will be cast as the classname returned,
rather than the classname associated with the domain.
The new class must be a subclass of the class associated with the domain,
because you cannot set_domain_name for the same domain twice,
or you will break SimpleDB::Class.

Returns the unique id of this item.
Note: The primary key ItemName (or id as we call it) is a special property of an item that doesn't exist in it's own data.
So if you want to search on the id,
you have to use itemName() in your queries as the attribute name.