Completed functionality from Haacked/NullGuard

Added extra functionality from the original project.

- Method guards for out parameters.
- Method guards for return values.
- Property Setter guard cannot set property to null.
- Property Getter guard cannot return null.
- Ability to override ValidationFlags per class.