Simplified nullable type and enum checks

Switched to using Nullable.GetUnderlyingType(type) so we don't need to
explicitly check for all nullable types. This also has the side effect
of fixing checks for nullable enums without the editable attribute
(which is my main reason for this commit).