Add check for exception message

Allows for you to test your exception messages to ensure the exception has been flung at the right time.

Example

```hack
public function testThrowsException():void 
{
        $this->expectCallable(
                () ==> {  throw new \HackPack\HackUnit\Core\ExpectationException("Message");
        })->toThrow('\HackPack\HackUnit\Core\ExpectationException', 'Message');
}
```
I don't think you want to do that because there could be a legitimate reason for throwing an exception with an empty string for a message.

According to the docs (http://docs.hhvm.com/manual/en/class.exception.php) Exception::getMessage() always returns a string, even when no parameter is given on the throw.  I also just confirmed this with my own personal test:

```php
<?hh // strict

try{
    throw new Exception();
} catch(Exception $e) {
    var_dump($e->getMessage());
}
```
Gives:

```
string(0) ""
```

This means that Exception::getMessage() will never === null.  If the person using this method passes in null, that means they just explicitly tell the framework that they don't care what the message is.  However, passing in an empty string would tell the framework they want the message to be empty.

I am in favor of keeping the type ?string.