Fix bad null check in pal_dsa.c
The code calls DSA_new() and then, only after assigning the value from
DSA_new to a pointer, tries to check that the pointer was not null.
Assigning to a null pointer leads to undefined behaviour and a compiler
can assume that assignment-to-a-null-pointer wont happen. Subsequently,
the compiler can remove the entire check because the pointer can't be
null.
Fix that by:
1. Moving the check for whether the pointer is null before dereferncing
the pointer.
2. Checking the return value of DSA_new() spearately after it has been
called.
Commit migrated from https://github.com/dotnet/corefx/commit/
e7fd1669eafafd16de85cd90b558d54abb3a3343