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.
`System.Security.Cryptography.CryptographicException` is the type of exception I get. Its inner exception is of the same type, and so is the inner exception of the inner exception.  

Here is the full exception message:  
> System.Security.Cryptography.CryptographicException: Unable to decode certificate. ---> System.Security.Cryptography.CryptographicException: Input data cannot be coded as a valid certificate. ---> System.Security.Cryptography.CryptographicException: Input data cannot be coded as a valid certificate.

I hope this helps.