Safe version of System.Convert, also includes Enum and generic type conversion