Merge pull request #18 from bantu/feature/hash-tests

Some Test Infrastructure for Hashing Algorithms and MD5 Tests
Misc fixes

- make it so '' is a legit password and doesn't unset the pw to pass bantu's unit tests (unit test could have been updated too but whatever)
- make it so not passing in any parameters to Crypt_RSA::setPassword() works without E_NOTICE or E_WARNING as per example in docs
- add missing phpdoc headers to File_ANSI
- cryan -> cyan in File_ANSI
Use OpenSSL for Math_BigInteger::modPow speedups

Also, make Crypt_RSA's public keys compatible with OpenSSL and make it so __toString will return the key even when it's the public key that's loaded and it hasn't been set as the public key.
Don't redefine MATH_BIGINTEGER_OPENSSL_ENABLED
CRYPT_RSA_ASN1_SEQUENCE shouldn't have been used
Fix a few E_NOTICEs
Workaround for buggy stream_select's

Workaround for this issue:

https://bugs.php.net/bug.php?id=42682

Thanks solefald!
Updated fix for php.pear.net bug # 18015

toBits() on an object for which setPrecision(8) has been called should always return 8 bits.

As such we'll just iterate backwards instead of forward.
Negative numbers should be prepended with a 0
Changing the public key format broke File_X509
Update a few comments
stream_select() failed when timeout went below 1 second
stream_set_blocking calls were unnecessary
stat() and lstat() ignore false output from _stat()

Thanks Fluffycloud!
SSH-2.0-SSHD doesn't implement hmac-*-96 correctly
Reformat keys even if private key format is the same OpenSSL uses

As is private keys weren't being encrypted when a private key was being set and OpenSSL was being used.

Thanks TeigneuX!
CRYPT_MODE_DES_CBC should have been CRYPT_DES_MODE_CBC

Thanks arook!
Do CRYPT_DES_MODE_CBC instead of CRYPT_MODE_DES_CBC
Ignore white spaces in CSRs and X.509 certs
X509: Fix 'OU' attribute mapping, add 'SN' (surname) short name, add 'role', 'title', 'description', 'x500UniqueIdentifier' DN attributes.