Updated Heaviside definition to avoid issues with underflow/NaNs
Current behavior:
julia> Heaviside_smooth(Forward_Diff.Dual(-10.0, 0.0))
Dual{Nothing}(0.0,NaN)
Expected/corrected behavior:
julia> Heaviside_smooth(Forward_Diff.Dual(-10.0, 0.0))
Dual{Nothing}(0.0,0.0)