Tests around enum parsing + refactor to pass

The CanParse  for the enum parser needed to be a bit more substantial to cater for all scenarios. I've tried to write as many tests as I can around enum arguments and this implementation passes all these tests.

I've replaced the CanParse method so that instead of just checking there is a single value available to parse, it now checks the value against all the known Enum names and int32 values. Unfortunately in .net 3.5 we don't have access to any Enum.TryParse methods, and instead of catching any exceptions thrown from Enum.Parse I feel this implementation suffices as it has a white list of values to check against.

Any errors found with the value being parsed need to come from the CanParse rather than the Parse, this is because the framework is setup to handle errors from CanParse and return them as part of the result object after parsing is complete. Any errors that are raised from the Parse method are not handled in this way.