Add IdentityEnumArrayType.java

This behaves like the IntegerArrayType except that it serializes to/fro
Enum values on save/load. See class comments for more info
Properly convert IdentityEnumArrayType values for CriteriaQueries
Don't attempt to convert Enums to Integers twice

Seems like this function gets called when we're using a CriteriaQuery.
However, in that case, we've already done the converting to Integer
prior to that query, so these should already be in ordinal form
Add readme and instructions for enum array type
Allow a map function to be passed through when getting ValueAsArrayOfType

This function will transform either the Object or the List of Objects
into some other value
Prevent ArrayStoreExceptions when converting Enums to Int array

We have to create another array so we guarantee there are no mixed
types.
Throw Hibernate exception if we can't cast to Enum
Properly pass already converted enums into nullSafeSet

We switched to putting them in a new array, but we were only loading the
new array when it wasn't already an integer. it'll already be an integer
when it's used via the criteria operators
Add enum domain classes / fields for testing
Add test for TestEnum creation
Add pgArrayContains test for EnumArrays
Add tests for pgArrayIsContainedBy with enum arrays
Add tests for pgArrayIsEmpty with enum arrays
Add test for pgArrayIsNotEmpty on enum arrays
Add tests for pgArrayOverlaps of enum arrays
Remove unnecessary methods from readme's enum
Cache bidirectional enum mapping.

Not sure if this'll gain us much, but it's probably best to cache as
best as possible at the db level.