Fix xpath caching mechanism

Without this commit, the xpath generation was caching results based on
the component's name in the configuration. This is troublesome as
multiple elements can have the same name for their element in the
document. The reason being that they will be at different and uniuqe
points in the Xpath. This causes collisions with the xpath caching.

This commit corrects the xpath caching by storing results by component
name and not xml name. This commit also enhances the interface to the
xmlcomponent (the basic component unit) to be more friendly and
ruby-ish. Later these enhancements will need to be employed elsewhere in
the mapper.