Fix variable name typo and broken test

Previous test had a typo (->macKey) instead of (->_macKey). The invalid
class property was causing PHP to throw a generic Exception, which
caused the test to erroneously pass. Test now tests for a more exact
Exception type and passes the correct arguments to encrypt()
Test for more precise Exception types

Testing for a generic Exception will cause a test to PASS if PHPUnit itself throws an Exception
More descriptive test names

Test method name now explains expected behavior rather than which method
is being exercised.
Fix comment format
Test for specific Exception messages

Because we're not using custom exception types to denote when different types
of exceptions occur, we can assert against the message to be sure the
exact exception being thrown is the one we expect. Else in some cases a
exception of the expected type could be thrown earlier in the method and
the test would still pass.
Remove trailing whitespace
Assert against variable type in addition to value

assertEquals() uses == while assertSame() uses ===
Start using PHPUnit annotations for expected exceptions

Using these instead of inline methods makes the test easier, allowing
the read to more easily see exactly what code is exercised in the test.
Better test for ensuring IV generation is different

Runs 20 iterations instead of 2 and ensures all outcomes are unique
Add test coverage for decrypting invalid ciphertext parts