Support both unencrypted PKCS#12 and PKCS#12 encrypted with an empty pas...

...sword in X509Certificate2 constructor

This pull request deals with the following problems of System.Security.Cryptography.X509Certificates.X509Certificate2 class:

- Mono implementation of X509Certificate2(byte[]) constructor can read only unencrypted PKCS#12. However .NET implementation of the same constructor supports also PKCS#12 encrypted with an empty password which is commonly created i.e. by OpenSSL command line tool.

- Mono implementation of X509Certificate2(string) constructor can read only PKCS#12 encrypted with an empty password. However .NET implementation of the same constructor supports also unencrypted PKCS#12.

Attached patch resolves both incompatibilities by extending Mono implementation with the ability to read both mentioned types of PKCS#12 in both mentioned constructors.
[Current implementation](https://github.com/mono/mono/blob/master/mcs/class/System/System.Security.Cryptography.X509Certificates/X509Certificate2.cs#L477) uses exactly the same handling. I was using the "minimal changes needed" approach.