Add new exception for invalid items
Rename validation methods to parse

In reality these methods parse out a value from a list of acceptables,
however I went ahead and renamed these methods in order to utilize
validation/transformation for values to aid in creating subclasses that
only accept particular values.

I can get away with this because I'm pretty much the only user of this
code ;-)
Add comment for export method
Simplify generic getter to avoid potential null value issues
Migrate to Validated array

Doing so simplifies the effort to creating the dictionary class while
maintaining any class hierarchy dependencies.
Restructure due to changes in dictionary get behavior
Add test to cover a specific bug

ELSWAK Validated Array had an issue where it treated keys in
setValueForKey like add. Accordingly it cause all sets to previously
set values to add new values with generated keys.

A corresponding test was added to the validated array tests as well.
Add validated array class

This change should have been submitted before migrating the dictionary
class, but c'est la vie