Unit test for the Encrypt class

The test data are provided by:
Cryptographic Algorithm Validation Program
National Institute of Standards and Technology

http://csrc.nist.gov/groups/STM/cavp/index.html

Used AES Multiblock Message Test (MMT) Sample Vectors
from http://csrc.nist.gov/groups/STM/cavp/documents/aes/aesmmt.zip
(the actual file used in that zipped file is CBCMMT128.rsp)

Also adds a class Kohana_EncryptTest_TestableEncrypt that wraps the
Encrypt class to mock out the actual mcrypt_create_iv calls.

However, it also changes Kohana_Encrypt internal API by adding
a protected function _create_iv to proxy mcrypt_create_iv
and to allow mocking and testing against KAT vectors.

Addresses #543.

Ready for merge. Kindly review thoroughly.

Thanks!
hm, tricky. To test the values provided through `instance` you'll need to be checking on `Kohana_Encrypt` unless you can find a way to make `instance` create instances of the subclass.

But it doesn't feel right to expose getters for them - especially the key. They're deliberately internal to the class once it's constructed.

Sometimes for specific cases like this I assert the value of the protected property using reflection. It couples the test to the implementation of the class, and feels a bit dirty. But it limits the dirtiness to the test rather than exposing new public API to all consumers.

So eg:

```php
$this->assertSameProtectedProperty($expected_key, $e, '_key');

protected function assertSameProtectedProperty($expect, $object, $name)
{
  $refl = new ReflectionClass($object);
  $property = $refl->getProperty($name);
  $property->setAccessible(TRUE);
  $this->assertSame($expect, $property->getValue($object));
}
```