Refactored code to allow more flexibility in parsing the results from CAS

Refactored code to allow more flexibility in parsing the results from CAS before handing off control back to Shib. The architecture should allow plugging in code if you want more details from CAS to go back to SHIB

Fixed a bug that made it possible to get multiple EntityIdParamaterBuilders (thus multiple copies of the parameter in the request)
General convention I was taught was to keep the two methods similar - if you test for equality a certain way, then the hashcode should be built using similar criteria. Since the equals check here is simply by type, I kept the hash to a hash of the class.

The equals I wrote does check for null (null is not an instanceof) and this would return true as it is an instance of the correct type.