Modified DelegateConstraintAttribute and EnumConstraintAttribute to opti...

...onally accept a Type to constrain the constraint to. Also updated unit tests to test the new cases. Note that the two cases I have been unable to add as tests are passing in a non-delegate type to DelegateConstraintAttribute and passing in a non-enum type to EnumConstraintAttribute. These cases are handled and cause a WeavingException. However, since the weaving happens before any of the test begin, I do not know how to test these two cases. Adding these two cases would make the tests test for almost every eventuality I can think of.