Remove a dependency on DH_dup()
Remove a dependency on DH_dup()

This change removes the need to call DH_dup() and instead copies the
relevant Big Numbers directly. This makes it possible to use s2n with
BoringSSL.

Although this means relying on the internal structure of the DH struct,
we already rely on this for serialising the parameters. Additionally,
we rely only on the well-known published internals.

This change also tightens up the memory deallocation in some failure
cases. Although this memory is being deallocated anyway in the handshake
functions, it's best to deallocate inline to make it more clear.

regehr/s2n,PKRoma/s2n,colmmacc/s2n,colmmacc/s2n,jldodds/s2n,wcs1only/s2n,bpdavidson/s2n,jfigus/s2n,wcs1only/s2n,PKRoma/s2n,jldodds/s2n,raycoll/s2n,gibson-compsci/s2n,jldodds/s2n,jldodds/s2n,jldodds/s2n,colmmacc/s2n,raycoll/s2n,Wiladams/s2n,gibson-compsci/s2n,awslabs/s2n,kench/s2n,awslabs/s2n,awslabs/s2n,wcs1only/s2n,awslabs/s2n,wcs1only/s2n,awslabs/s2n,alexeblee/s2n,colmmacc/s2n,colmmacc/s2n,gibson-compsci/s2n,alexeblee/s2n,PKRoma/s2n,SomeoneWeird/s2n,gibson-compsci/s2n,gibson-compsci/s2n,alexeblee/s2n,bpdavidson/s2n,raycoll/s2n,wcs1only/s2n,awslabs/s2n,raycoll/s2n,PKRoma/s2n,bpdavidson/s2n,gibson-compsci/s2n,hechunwen/s2n,PKRoma/s2n,wcs1only/s2n,bpdavidson/s2n,PKRoma/s2n,pascal-cuoq/s2n,wcs1only/s2n,bpdavidson/s2n,raycoll/s2n,PKRoma/s2n,bpdavidson/s2n,colmmacc/s2n,0-wiz-0/s2n,alexeblee/s2n,alexeblee/s2n,PKRoma/s2n,alexeblee/s2n,jqk6/s2n,barnabycolby/s2n,wcs1only/s2n,kedars/s2n,raycoll/s2n